18.JAVA-pull解析XML
2019-12-13 06:34:04来源:博客园 阅读 ()
18.JAVA-pull解析XML
1.pull解析介绍
pull解析其实和我们上章学的sax解析原理非常类似,在Android中非常常用.
在java中,需自己获取xmlpull所依赖的类库分别为:kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
pull和sax区别
- sax: 被动解析,一旦解析,则必须等待解析完成,不能控制事件的处理主动结束。
- pull: 主动解析, 比SAX会更加灵活,因此可以在满足了需要的条件后停止解析,不再获取事件.
2.pull解析步骤
- 获取XmlPullParser解析器,通过XmlPullParserFactory工厂类获取
- 通过XmlPullParser. setInput(new FileInputStream (),"utf-8")设置解析器的输入文件以及格式
- 然后通过XmlPullParser.getEventType()一直while获取当前事件类型(文档开头/元素开头/内容/文档结束等).然后通过getName()等方法获取元素名、内容等,直到遇到END_DOCUMENT(文档结束)退出.
XmlPullParser中常用方法如下:
getName(); //获取当前元素名 getTextCharacters(); //获取当前内容(当getEventType ()==TEXT时通过这个来获取元素内容) nextText(); //获取下个内容(当getEventType ()==START_TAG时通过这个来获取元素内容)
3.persons.xml示例如下
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <persons> <person> <姓名>张三</姓名> <性别>男</性别> <年龄>99</年龄> </person> <person> <姓名>李四</姓名> <性别>男</性别> <年龄>17</年龄> </person> </persons>
4.代码如下
@Test public void PullParseXml() throws Exception{ ArrayList<Person> list = null; Person person = null; //1.获取XmlPullParser解析器,通过XmlPullParserFactory工厂类获取 XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser(); //2.设置解析器的输入文件以及格式 xmlPullParser.setInput(new FileInputStream(new File("src//persons.xml")),"utf-8"); //3.while获取当前事件类型.然后获取元素名、内容等,直到遇到END_DOCUMENT(文档结束)退出. int type = xmlPullParser.getEventType(); while(type!=xmlPullParser.END_DOCUMENT) { if(type==xmlPullParser.START_TAG) //开始元素 { if("persons".equals(xmlPullParser.getName())) { list = new ArrayList<Person>(); } else if("person".equals(xmlPullParser.getName())) { person = new Person(); } else if("姓名".equals(xmlPullParser.getName())) { person.setName(xmlPullParser.nextText()); } else if("性别".equals(xmlPullParser.getName())) { person.setSex(xmlPullParser.nextText()); } else if("年龄".equals(xmlPullParser.getName())) { person.setAge(xmlPullParser.nextText()); } } else if(type==xmlPullParser.END_TAG) //结束元素 { if("person".equals(xmlPullParser.getName())) { list.add(person); } } type = xmlPullParser.next(); } //打印: for(Person person1:list){ System.out.println(person1); } }
打印:
原文链接:https://www.cnblogs.com/lifexy/p/12028842.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JVM常见面试题解析 2020-06-11
- 深入解析ThreadLocal和ThreadLocalMap 2020-06-08
- dockerMesos配置项是怎么解析的?案例详解 2020-06-02
- 最新115道经典Java面试题及答案解析,快来看看你掌握了多少 2020-06-01
- Spark SQL源码解析(五)SparkPlan准备和执行阶段 2020-05-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash