Android使用Dom解析xml
一、理论准备
二、上代码
<?xml version="1.0" encoding="utf-8" ?><persons><person id="23"><name>Jack</name><age>21</age></person><person id="20"><name>Dick</name><age>23</age></person></persons>
package cn.bgxt.service;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import cn.bgxt.domain.Person;public class DomService {public DomService() {// TODO Auto-generated constructor stub}public static List<Person> getPersons(InputStream inputStream) throws Exception{List<Person> list=new ArrayList<Person>();//获取工厂对象,以及通过DOM工厂对象获取DOMBuilder对象DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();//解析XML输入流,得到Document对象,表示一个XML文档Document document=builder.parse(inputStream);//获得文档中的次以及节点,personsElement element=document.getDocumentElement();// 获取Element下一级的person节点集合,以NodeList的形式存放。NodeList personNodes=element.getElementsByTagName("person");for(int i=0;i<personNodes.getLength();i++){//循环获取索引为i的person节点Element personElement=(Element) personNodes.item(i);Person person=new Person();//通过属性名,获取节点的属性idperson.setId(Integer.parseInt(personElement.getAttribute("id")));//获取索引i的person节点下的子节点集合NodeList childNodes=personElement.getChildNodes();for(int j=0;j<childNodes.getLength();j++){//循环遍历每个person下的子节点,如果判断节点类型是ELEMENT_NODE,就可以依据节点名称给予解析if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){if("name".equals(childNodes.item(j).getNodeName())){//因为文本也是一个文本节点,//所以这里读取到name节点的时候,//通过getFirstChild()可以直接获得name节点的下的第一个节点,就是name节点后的文本节点//取其value值,就是文本的内容person.setName(childNodes.item(j).getFirstChild().getNodeValue());}else if("age".equals(childNodes.item(j).getNodeName())){person.setAge(Integer.parseInt(childNodes.item(j).getFirstChild().getNodeValue()));}}}//把解析的person对象加入的list集合中list.add(person);}return list;}}
三、遗留问题
解析xml必须事先知道xml的结构么?不知道不行么?
四、参考文献
http://www.cnblogs.com/plokmju/p/android_DOMforXML.html
Android使用Dom解析xml的更多相关文章
- Android之DOM解析XML
一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息 ...
- Android DOM解析XML方法及优化
在Android应用开发中,我们常常要在应用启动后从服务器下载一些配置文件,这些配置文件包含一些项目中可能用到的资源,这些文件很多情况下是XML文件,这时就要将XML下载到文件中保存,之后再解析XML ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- Android几种解析XML方式的比较
https://blog.csdn.net/isee361820238/article/details/52371342 一.使用SAX解析XML SAX(Simple API for XML) 使用 ...
- Dom 解析XML
xml文件 <?xml version="1.0" encoding="UTF-8"?><data> <book id=&q ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- 简单谈谈dom解析xml和html
前言 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.html,xml都是基于这个模型构造的.这也是一个W3C推出的标准.j ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
随机推荐
- NotificationListenerService不能监听到通知
作者:Hugo链接:https://www.zhihu.com/question/33540416/answer/113706620来源:知乎著作权归作者所有,转载请联系作者获得授权. 背景知识: 所 ...
- 配置servers时,错误:Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.e ...
- Android Studio快捷键指南(本文持续更新)
这是我在使用Android Studio过程中接触到的一些快捷键,和大家分享,后面会继续完善此文,也欢迎大家踊跃补充,一起完善. 快捷键 删除并剪贴行:Ctrl+X 复制一行:Ctrl+D 代码格式整 ...
- Ganymed SSH-2 for Java
Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...
- C#扫盲之:String字符串的常用方法和冷知识
前言 字符串对于任何编程语言都是必须操作和了解的,因为在实际编程中,任何项目和工程都必须要处理字符串数据,文件路径.提示消息,文本的处理等等,而在使用过程中很多人都是没有系统的了解,大量使用strin ...
- JQuery_AJAX简单笔记
<script type="text/javascript"> //Ajax方法 $.ajax({ type: "post", cache: fal ...
- xml_02
1.xml 2.对于XML文档的约束 |-DTD <!DOCTYPE 根元素 [ <!ELEMENT 元素名 (xx)> <!ATTLIS ...
- .NET 统一用户管理 -- 统一鉴权
统一鉴权 目的 为什么要统一鉴权了,每一个业务系统几乎都离不开,用户,角色,权限 这个 3个基础功能,为了避免各个系统各自去开发一套权限管理等基础功能,也同时轻松管理每个用户的全部权限. 怎么做 ...
- web开发学习之旅---css第一天
一.css全称 Cascade Style Sheet层叠样式表 二.css引入方式 行内样式:<h2 style="color:#0F0">Hello World&l ...
- 20151213Jquery学习笔记--插件
插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 写出来的程序.目前 jQuery 插件已超过几千种,由来自世界各地的开发者共同编写.验证 和完 ...