Android-->XmlPullParser
2014-01-15 17:59
423 查看
public static void save() throws Exception { //获取文件目录路径 一般是应用层目录路径。storage/emulated/0 String filename = Environment.getExternalStorageDirectory()+File.separator+"xx.xml"; File file = new File(filename); //创建一个新文件。 file.createNewFile(); Log.e(TAG, filename); FileOutputStream fos = new FileOutputStream(filename); XmlSerializer serializer = Xml.newSerializer(); // 设置输出流设置编码 serializer.setOutput(fos, "UTF-8"); // serializer.startDocument("UTF-8", true);//设置编码 serializer.startTag(null, "persons"); //android规定一个xml只能有一个根节点,这个 TAG就是一个根节点 。 int count = 0; for(int x=0;x<10;x++) { /** * 有开有关,一定要要求闭合, * 1:获取XmlSerializer实例,然后设置文件输出流,编码等。 * 2: 设置Dcoument编码。第二个参数,是否是独立的根?应该是。。 */ serializer.startTag(null,"person");//1 serializer.attribute(null, "id",String.valueOf(count) );//attribute设置属性, serializer.startTag(null, "name"); //11 serializer.text("zhangsan"+String.valueOf(count));//设置TAG中间内容。 serializer.endTag(null, "name"); //11 serializer.startTag(null, "age");//12 serializer.text(String.valueOf(count)); serializer.endTag(null, "age");//12 serializer.endTag(null, "person");//1 count++; } serializer.endTag(null, "persons"); serializer.endDocument(); fos.flush();//刷新进文件 fos.close();//关闭流 }
上面是 XmlSerializer 制作xml的
package com.maitewang.internetdemo.demo; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import android.util.Xml; public class XmlDemo { public static List<Person> getPerson(InputStream is) throws Exception { Person person = null; List<Person> persons = null; // 两种方法获取对象,其实哪种都一样.. // 第一种 XmlPullParser pullParser = Xml.newPullParser(); // 第二种 生成工厂 然后工厂获取. XmlPullParserFactory xppf = XmlPullParserFactory.newInstance(); XmlPullParser pullParser1 = xppf.newPullParser(); // 几种事件类型 // XmlPullParser.START_DOCUMENT(开始解析) // XmlPUllParser.START_TAG(开始元素) // XmlPullParser.TEXT(解析文本): // XmlPullParser.END_TAG(结束元素); // XmlPullParser.END_DOCUMENT(结束解析) 事件结束 每一种都与之对应. // 解析中 元素又有属性.属性该怎么解析? 取出元素 文本. // 2:设置要解析的流,编码 pullParser.setInput(is, "UTF-8"); // 3:获取编码事件 int event = pullParser.getEventType(); // 4:中间开始判断事件 while (event != XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT: // 判断是否文档开头. // 一般这个时候开始创建对象准备分解文档 persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: // 开始进入元素了 // pullParser.getName();获取元素名字 也就是<person></person> 这个 if ("person".equals(pullParser.getName())) { // 取出属性元素id为0的值,方法:pullParser.getAttributeValue(int index); int id = new Integer(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if (person == null) { if ("name".equals(pullParser.getName())) { // 方法名称也出来了.pullParser.nextText();获取元素值 person.setName(pullParser.nextText()); } if ("age".equals(pullParser.getName())) { person.setAge(pullParser.nextText()); } } case XmlPullParser.END_TAG: if ("person".equals(pullParser.getName())) { persons.add(person); person = null; } break; } // 方法名称也出来了,next开始读取下一条元素. event = pullParser.next(); } return persons; } }
XmlPullParser
1:实例华XmlPullParser对象,2种方式:
1.1:Xml.newPullParser();
1.2: 获取工厂,然后从工厂里面生产
XmlPullParserFactory xppf = XmlPullParserFactory.newInstance();
XmlPullParser xpp = xppf.newPullParser();
2:因为pull解析是根据事件来的,所以需要判断事件。
// 几种事件类型
// XmlPullParser.START_DOCUMENT(开始解析)
// XmlPUllParser.START_TAG(开始元素)
// XmlPullParser.TEXT(解析文本):
// XmlPullParser.END_TAG(结束元素);
// XmlPullParser.END_DOCUMENT(结束解析) 事件结束 每一种都与之对应.
3:Method:
pullParser.getName();获取元素名字
取出属性元素id为0的值,方法:pullParser.getAttributeValue(int index); AttriBute 元素,根据这一系列操作。
pullParser.nextText(); 获取元素内容。
pullParser.next();读取下一条元素。
相关文章推荐
- android xml解析 XmlPullParser的使用
- android使用XmlPullParser来解析XML文件
- android错误整理——XmlPullParser的bug
- android:xml的解析值XmlPullParser
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- Android XML文件读写 XmlPullParser
- android中XmlPullParser解析XML到next时出错
- 请帮忙用android的XmlPullParser解析xml中的节点
- 请帮忙用android的XmlPullParser解析xml中的节点
- Android XmlPullParser 方式解析 Xml 文档
- 新浪微博混淆打包报错java.lang.NoSuchMethodError: android.util.Xml.newPullParser
- android XMLPullParser读取xml文件
- android使用XmlPullParser来解析XML文件
- Android 中使用XmlPullParser解析网络XML文件
- bak 6.android xml解析 XmlPullParser的使用.
- Android网络编程之三:XmlPullParser解析Xml文件
- Android - XmlPullParser的简单应用
- 我的Android进阶之旅------>Android中解析XML 技术详解---->SAX解析、DOM解析、PULL解析
- android解析XML总结(SAX、Pull、Dom三种方式) <转载>