设为首页 加入收藏

TOP

Android解析xml文件-采用DOM,PULL,SAX三种方法解析(三)
2017-10-11 15:24:14 】 浏览:2210
Tags:Android 解析 xml 文件 采用 DOM PULL SAX 方法
urn
persons; 127 128 } 129 public static Integer lastId(InputStream inStream) throws Throwable{ 130 int id = 0; 131 XmlPullParser parser = Xml.newPullParser(); 132 parser.setInput(inStream, "UTF-8"); 133 int eventType = parser.getEventType();// 产生第一个事件 134 do { 135 if (eventType == XmlPullParser.START_TAG) { 136 String name = parser.getName();// 获得解析器当前指向的元素的名称 137 if ("person".equals(name)) { 138 id = Integer.valueOf(parser.getAttributeva lue(0)); 139 } 140 } 141 eventType = parser.next(); 142 } while (eventType != XmlPullParser.END_DOCUMENT); 143 return id; 144 } 145 146 } PullService

3.SAXServer解析

 1 import java.io.InputStream;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import javax.xml.parsers.SAXParser;
 5 import javax.xml.parsers.SAXParserFactory;
 6 
 7 import org.xml.sax.Attributes;
 8 import org.xml.sax.SAXException;
 9 import org.xml.sax.helpers.DefaultHandler;
10 /**
11  * 采用SAX解析XML
12  * @author GIS
13  *
14  */
15 public class SAXService {
16     
17     public List<Person> getHongXml(InputStream inStream) throws Throwable {
18          SAXParserFactory factory = SAXParserFactory.newInstance();
19          SAXParser parser = factory.newSAXParser();
20          ContentParser contentParser = new ContentParser();
21          parser.parse(inStream, contentParser);
22          inStream.close();
23         return contentParser.getPersons();
24     }
25     private final class ContentParser extends DefaultHandler{
26         private List<Person> persons = null;
27         public List<Person> getPersons() {
28             return persons;
29         }
30 
31         private String tag = null;
32         private Person person = null;
33         @Override
34         public void startDocument() throws SAXException {
35             persons = new ArrayList<Person>();
36         }
37 
38         @Override
39         public void startElement(String uri, String localName, String qName,
40                 Attributes attributes) throws SAXException {
41             if ("person".equals(localName)) {
42                 person = new Person();
43                 person.setId(new Integer(attributes.getValue(0)));
44             }
45             tag = localName;
46         }
47 
48         @Override
49         public void endElement(String uri, String localName, String qName)
50                 throws SAXException {
51             if ("person".equals(localName)) {
52                 persons.add(person);
53                 person =null;
54             }
55             tag = null;
56         }
57 
58         @Override
59         public void characters(char[] ch, int start, int length)
60                 throws SAXException {
61             if (tag != null) {
62                 String data = new String(ch, start, length);//获取文本节点的数据
63                 if ("name".equals(tag)) {
64                     person.setName(data);
65                 }else if ("age".equals(tag)) {
66                     person.setAge(new Short(data));
67                 }
68             }
69         }
70         
71     }
72 
73 }
SAXService

调用,这里举例用sax调用

1 SAXService service = new SAXService();
2         InputStream inStream = getClass().getClassLoader().getResourceAsStream(
3                 "×××.xml");//放在src下,或此处变成网络路径下
4         List<Person> persons = service.getHongXml(inStream);
5         for (Person person : persons) {
6             Log.i(TAG, person.toString());
7         }
View Code

 

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇手机网站判断及跳转 下一篇微信小程序首页总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目