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 ...
随机推荐
- [转] Android:微信授权登录与微信分享全解析
https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...
- 快速安装VIM开发环境
*Mac上当前用户的.vim目录打包*:附件地址:http://pan.baidu.com/s/1sj5FjZJ 1. 备份好系统的原来的vim配置文件,以备恢复使用: mv ~/.v ...
- 怎么在AptanaStudio中把电脑中的浏览器设置为默认执行方法
1.在Aptana中找到按钮 2.点击向下的三角形找到
- js中的对象封装
用json封装,用构造函数封装,用原型函数进行封装,原型函数最节省内存,将大部分相同的属性或方法放在静态区域中,创建对象时,如果对象属性与默认的不一样,则可以在该对象中覆盖静态区域中的值,不影响其他对 ...
- 关于.NET前后台提示框的那点事
前言 关于提示框,或多或少都用到过,提示框常见方式两种:js原生alert() 和 div模拟弹层:下面以一个常见的需求业务场景来展现提示框的那点事: 正文内容 客户:需求方: 小白:实现方(全权负责 ...
- 简单JavaSE数据类型入门
新的一节学习了JavaSE,今天主要来说一下Java的数据类型及其输出,借用Xmind,可以生动形象的向大家来解释Java的数据类型: 其中数值整数型举例: public class A02{ pub ...
- ACTIVEX 重新安装与卸载
1.卸载工具 SREngLdr.EXE,打开后执行 系统修复->浏览器加载项,找到对应的ACTIVEX,点击删除.OK 2.开发人员如遇到ACTIVEX版本更新.可在OBJECT 里加入更高版本 ...
- Objective-C MRC多个对象相互引用的内存管理
在MRC环境下,假定CTRoom对象是CTPerson的一个成员变量,那么修改CTRoom对象时应注意,代码如下: - (void) setRoom:(CTRoom *) room { //需判断新旧 ...
- 巧谈 GCD
转载自:http://www.jianshu.com/p/665261814e24 谈到iOS多线程,一般都会谈到四种方式:pthread.NSThread.GCD和NSOperation.其中,苹果 ...
- CSS3中的transform
CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. transform 在2D里主要是4个方法.除了rotate 其他都是接受x y值 translate skew rotate sca ...