xml文件的生成和解析
来源:互联网 发布:李涛疯狂淘宝上市 编辑:程序博客网 时间:2024/06/03 05:07
<?xml version=‘1.0’ encoding=‘utf-8' standalone=‘yes'?> xml文件的头<root>根节点<string name=‘account’> 开始标签 name=‘account 属性haha 文本节点</string> 结束标签<string name=‘password’>123456</string></root>所有的标签 不管是开始标签还是结束标签 都是元素 element
一:xml文件的生成
1.采用组拼字符串生成xml文件
利用StringBuffer或者StringBuilder 注意特殊字符的转义
//<头>//<info>//<student id='800001'>//<name>张三</name>//<age>18</age>//</student>//</info>//把数据存成xml文件(跨平台)
try {StringBuffer sb = new StringBuffer();sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes'?>");sb.append("<info>");sb.append("<student id='"+id+"'>");sb.append("<name>"+name+"</name>");sb.append("<age>"+age+"</age>");sb.append("</student>");sb.append("</info>");File file = new File(Environment.getExternalStorageDirectory(),"info.xml");FileOutputStream fos = new FileOutputStream(file);fos.write(sb.toString().getBytes());fos.close();Toast.makeText(this, "保存学生信息成功", 0).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "保存学生信息失败", 0).show();}权限:WRITE_EXTERNAL_STORAGE
2.利用Android序列化(生成)xml文件的api
try {//1.创建一个xml文件的序列化器 XmlSerializer serializer = Xml.newSerializer(); //2.设置文件的输出和编码方式 FileOutputStream os = new FileOutputStream(new File(Environment.getExternalStorageDirectory(),"info.xml")); serializer.setOutput(os, "utf-8"); //3.写xml文件的头 serializer.startDocument("utf-8", true); //4.写info节点 第一个参数:命名空间 第二个参数:节点名称 serializer.startTag(null, "info"); //5.写student节点 serializer.startTag(null, "student"); //6.写属性 serializer.attribute(null, "id", id); //7.写name serializer.startTag(null, "name"); serializer.text(name); serializer.endTag(null, "name"); //8.写age serializer.startTag(null, "age"); serializer.text(age); serializer.endTag(null, "age"); serializer.endTag(null, "student"); serializer.endTag(null, "info");//写文件的末尾 serializer.endDocument(); os.close();Toast.makeText(this, "保存学生信息成功", 0).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "保存学生信息失败", 0).show();}二、xml文件的解析
1.DOM解析 在内存当中生成树状的xml结构
2.Dom4j
3.SAX 基于事件的解析 自上而下的解析
4.pull解析
类似sax解析,不过写起来更加的简单,容易理解,内存开销小,速度快
//解析放在assets里的info.xml文件try {InputStream is = this.getAssets().open("info.xml");//解析info.xml文件//1.得到xml文件的解析器XmlPullParser parser = Xml.newPullParser();//2.设置输入流 和编码parser.setInput(is, "utf-8");//3.解析xml文件,获取当前的事件类型. int type = parser.getEventType();while(type!=XmlPullParser.END_DOCUMENT){System.out.println(parser.getEventType()+"----"+parser.getName());//当前事件节点的名字//移动解析器到下一个节点type = parser.next();}is.close();} catch (Exception e) {e.printStackTrace();}
例子:
<?xml version="1.0" encoding="utf-8" ?> <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/"> <string>北京</string> <string>-5℃/7℃</string> <string>1月9日 晴转晴</string> <string>北风3-4级转无持续风向微风</string> <string>穿衣指数:冷。旅游指数:一般。温度稍低,风稍大,外出注意防风保暖。</string> </ArrayOfString>
try {XmlPullParser parser = Xml.newPullParser();// 设置解析器的参数InputStream is =getAssets().open("getWeatherbyCityName.xml");parser.setInput(is,"utf-8");List<String> infos = new ArrayList<String>();int type = parser.getEventType();while(type!=XmlPullParser.END_DOCUMENT){if(type==XmlPullParser.START_TAG){//当前是开始节点.if("string".equals(parser.getName())){String info = parser.nextText();infos.add(info);}}type = parser.next();//只要不解析到文档的末尾就不停的解析下一个节点}is.close();String cityname = infos.get(0);String temp = infos.get(1);String weather = infos.get(2);String wind = infos.get(3);String wearinfo = infos.get(4);TextView tv = (TextView) findViewById(R.id.tv_info);tv.setText("城市名称:"+cityname+"\n温度:"+temp+"\n天气信息:"+weather+"\n风力:"+wind+"\n穿衣指数:"+wearinfo);} catch (Exception e) {e.printStackTrace();}
阅读全文
0 0
- XML文件的解析和生成(DOM)
- XML文件的生成和解析
- xml文件的生成和解析
- XML文件生成和解析
- Cocos2d-x tinyxml2用于xml的解析,自动生成xml文件和解析xml文件
- XML文件和JSON文件的解析及生成
- Pull解析器解析XML文件和生成XML文件
- 用dom4j的方式解析和生成xml文件
- 关于Android下,XML文件的生成和解析方式
- java解析和生成xml文件的补充
- DOM4J对XML文件的生成和解析
- XML的解析和生成
- xml的生成和解析
- xml的生成和解析
- XML的生成和解析
- dom4j生成和解析xml文件
- Android 解析和生成XML文件
- Android_xml_pull解析和生成xml文件
- vb.net 教程 5-7 Bitmap类 2
- JAVA——IO流 之 节点流和处理流以及流的关闭顺序(5)
- Java中字符串截取使用
- 服务器测试包含的主要测试
- Strings Homomorphism
- xml文件的生成和解析
- 高精度计算之基础
- 全码倍数搜索
- CIFAR-10数据集可视化二进制版本
- Android Studio项目用Git上传至码云(OSChina)
- POJ225 Dungeon Master BFS
- HTML5中的canvas
- 输入一个数num,编程输出有几对质数的和等于num,
- Android studio cmake报错