DOM解析XML文件

除了可以使用SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件。 DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOMAPI遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

importjavax.xml.parsers.DocumentBuilder;

importjavax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

importcn.itcast.xml.domain.Person;

/**

* 使用Dom解析xml文件

*

*/

public class DomXMLReader {

public staticList<Person> readXML(InputStream inStream) {

List<Person> persons =new ArrayList<Person>();

DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();

try {

DocumentBuilder builder =factory.newDocumentBuilder();

Document dom =builder.parse(inStream);

Element root =dom.getDocumentElement();

NodeList items =root.getElementsByTagName(“person”);//查找所有person节点

for (int i = 0; i <items.getLength(); i++) {

Person person = new Person();

//得到第一个person节点

Element personNode = (Element)items.item(i);

//获取person节点的id属性值

person.setId(newInteger(personNode.getAttribute(“id”)));

//获取person节点下的所有子节点(标签之间的空白节点和name/age元素)

NodeList childsNodes =personNode.getChildNodes();

for (int j = 0; j <childsNodes.getLength(); j++) {

Node node = (Node)childsNodes.item(j);
//判断是否为元素类型

if(node.getNodeType() ==Node.ELEMENT_NODE){        Element childNode = (Element)node;

//判断是否name元素

if(“name”.equals(childNode.getNodeName())) {

//获取name元素下Text节点,然后从Text节点获取数据           person.setName(childNode.getFirstChild().getNodeValue());

} else if(“age”.equals(childNode.getNodeName())) {

person.setAge(newShort(childNode.getFirstChild().getNodeValue()));

}

}

}

persons.add(person);

}

inStream.close();

} catch (Exception e) {

e.printStackTrace();

}

return persons;

}

时间: 2024-07-31 14:33:21

DOM解析XML文件的相关文章

使用DOM解析XML文件

首先写了一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>c#</name> <author>张三</author> <year>1990</year> <price>60</price> </book&

JAVA中使用DOM解析XML文件

JAVA中使用DOM解析XML文件: 创建DocumentBuilderFactory的对象                                 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 创建DocumentBuilder对象 通过documentBuilder对象的parser方法加载xml文件到当前项目下 获取所有XML文件内节点的集合    getElementsByTagName()方

java DOM解析xml文件出现#text节点解决方案

java DOM解析xml文件出现#text节点解决方案 原生java解析xml的方法提供了两个,DocumentBuilder 和 SAXParser. 试了第一个DOM方法,在解析输出节点过程中,getNodeName()输出节点名发现多出了几个#text节点. text.xml <?xml version="1.0" encoding="UTF-8"?> <!-- xml解析测试文件 --> <LData> <ldat

使用第三方DOM解析XML文件

第一步:引入动态库 第二步:拖入第三方文件 第三放文件网址 https://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ 根据文件的的要求在工程中添加相应的字段 // libxml includes require that the target Header Search Paths contain // // /usr/include/libxml2 // // and Oth

iOS:使用第三方DOM解析XML文件

第一步:引入动态库 第二步:拖入第三方文件 根据文件的的要求在工程中添加相应的字段 // libxml includes require that the target Header Search Paths contain // // /usr/include/libxml2 // // and Other Linker Flags contain // // -lxml2 这时引入的文件是MRC的,让其能在ARC的环境下运行需要更改设置 需要更改单个文件是否采用ARC来进行编译有两种情况,我

解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

UI进阶 解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

2017/4/26-DOM解析XML文件

DOM解析XML 1.分析 DOM是JAVA自带的XML解析API.DOM首先将XML文件全部加载至内存中,然后再内存中创建DOM树,生成DOM树上的每个Node节点. 2.优点 1) 可以创建或修改XML文件内容. 2) 进行XSLT转换. 3) 进行Xpath过滤. 3.缺点 1) 由于DOM会先把XML文件加载至内存中并使用DOM树,因此文件过大时,会占用非常多的内存. 2) 相对于SAX,效率上也会有明显的下降. 4.适用场合 1) 当需要对XML文档进行修改或者创建XML文档时,可以使

【Android进阶】解析XML文件之使用DOM解析器

在前面的文章中,介绍了使用SAX解析器对XML文件进行解析,SAX解析器的优点就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析.DOM解析器的优点可能是理解起来比较的直观,当然,每个人对不同的解析方法可能有不同的喜好.但是DOM解析器有个比较大的缺点,就是占用内存比较多,在Android中的XML解析中,还是更推荐其他的解析方式. 下面介绍使用DOM解析器对XML进行解析. 下面是我们需要解析的xml文件 <?xml version="1.0" encodin