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----二维码开发
Android----二维码开发 本文为原创,转载请注明出处:http://www.cnblogs.com/xiaobaicai12138/p/5644244.html 一.工具 谷歌的zxing 不 ...
- Oracle 11g之创建和管理表练习
创建表: SQL> create table name (empno number(4), ename VARCHAR2(10)); 查看表结构: desc name; SQL> desc ...
- swift入门-day02
1.函数 2.闭包 3.构造函数基础 4.重载构造函数 5.KVC构造函数 6.遍历构造函数 7.懒加载 8.只读属性 1.函数 掌握函数的定义 掌握外部参数的用处 掌握无返回类型的三种函数定义方式 ...
- html-----015---HTML ASCII 参考手册
HTML 和 XHTML 用标准的 7 比特 ASCII 代码在网络上传输数据. 7 比特 ASCII 代码可提供 128 个不同的字符值. 7 比特 可显示的 ASCII 代码 <html&g ...
- jdbc的封装
package com.wjf.helper; import java.io.FileInputStream; import java.io.FileOutputStream; import java ...
- javascript变量,类型 第9节
1.变量,数据类型 <html> <head> <title>变量</title> </head> <body> <h3& ...
- oracle 日期格式大全
to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,& ...
- Struts2的运行原理和运行与原理
Struts2 struts2的流程图 运行机制 1.客户端发送请求.通过ActionContextLoader调用FilterDispatcher(struts) 2.FilterDispatche ...
- Flash Professional CS6 安装zxp插件
说明 头两天因工作原因需要使用DragonBones,他的工作方式是的Flash Professional CS5.5以上的环境. DragonBones提供的是一个文件名为:xzp的文件,在Wind ...
- 选择第n小的元素之python实现源码
def partition(A, p, r): j = p+1 for i in range(p+1, r+1): if(A[i] < A[p]): tmp = A[i] A[i] = A[j] ...