设为首页 加入收藏

TOP

Android解析xml文件-采用DOM,PULL,SAX三种方法解析(二)
2017-10-11 15:24:14 】 浏览:2208
Tags:Android 解析 xml 文件 采用 DOM PULL SAX 方法
5
public static void save(List<Person> persons, OutputStream outputStream) 26 throws Throwable { 27 XmlSerializer serializer = Xml.newSerializer(); 28 serializer.setOutput(outputStream, "UTF-8"); 29 serializer.startDocument("UTF-8", true); 30 serializer.startTag(null, "persons"); 31 for (Person person : persons) { 32 serializer.startTag(null, "person"); 33 serializer.attribute(null, "id", person.getId().toString()); 34 35 serializer.startTag(null, "name"); 36 serializer.text(person.getName()); 37 serializer.endTag(null, "name"); 38 39 serializer.startTag(null, "age"); 40 serializer.text(person.getAge().toString()); 41 serializer.endTag(null, "age"); 42 43 serializer.endTag(null, "person"); 44 } 45 46 serializer.endTag(null, "persons"); 47 serializer.endDocument(); 48 outputStream.flush(); 49 outputStream.close(); 50 } 51 52 /** 53 * 采用Pull解析器生成XML内容,使用Writer 54 * @param persons 55 * @param writer 56 * @throws Throwable 57 */ 58 public static void saveWrite(List<Person> persons, Writer writer) 59 throws Throwable { 60 XmlSerializer serializer = Xml.newSerializer(); 61 serializer.setOutput(writer); 62 serializer.startDocument("UTF-8", true); 63 serializer.startTag(null, "persons"); 64 for (Person person : persons) { 65 serializer.startTag(null, "person"); 66 serializer.attribute(null, "id", person.getId().toString()); 67 68 serializer.startTag(null, "name"); 69 serializer.text(person.getName()); 70 serializer.endTag(null, "name"); 71 72 serializer.startTag(null, "age"); 73 serializer.text(person.getAge().toString()); 74 serializer.endTag(null, "age"); 75 76 serializer.endTag(null, "person"); 77 } 78 79 serializer.endTag(null, "persons"); 80 serializer.endDocument(); 81 writer.flush(); 82 writer.close(); 83 } 84 85 /** 86 * 采用Pull解析器解析XML内容 87 * 88 * @param inStream 89 * @return 90 * @throws Throwable 91 */ 92 public List<Person> getHongXml(InputStream inStream) throws Throwable { 93 List<Person> persons = null; 94 Person person = null; 95 XmlPullParser parser = Xml.newPullParser(); 96 parser.setInput(inStream, "UTF-8"); 97 int eventType = parser.getEventType();// 产生第一个事件 98 while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档事件就一直循环 99 switch (eventType) { 100 case XmlPullParser.START_DOCUMENT: 101 persons = new ArrayList<Person>(); 102 break; 103 case XmlPullParser.START_TAG: 104 String name = parser.getName();// 获得解析器当前指向的元素的名称 105 if ("person".equals(name)) { 106 person = new Person(); 107 person.setId(Integer.valueOf(parser.getAttributeva lue(0))); 108 } else if (person != null) { 109 if ("name".equals(name)) { 110 person.setName(parser.nextText());// 获取解析器当前元素的下一个文本节点的值 111 } else if ("age".equals(name)) { 112 person.setAge(Short.valueOf(parser.nextText())); 113 } 114 } 115 break; 116 case XmlPullParser.END_TAG: 117 if ("person".equals(parser.getName())) { 118 persons.add(person); 119 person = null; 120 } 121 break; 122 } 123 124 eventType = parser.next(); 125 } 126 ret
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇手机网站判断及跳转 下一篇微信小程序首页总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目