DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来是比较直观的,并且在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM也是可行的。
1:person.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>李明</name>
<age>30</age>
</person>
<person id="20">
<name>李向梅</name>
<age>25</age>
</person>
</persons>
2:DOMPersonService
package cn.itcast.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.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import cn.itcast.domain.Person;
/**
* 采用DOM解析XML内容
*/
public class DOMPersonService {
public static List<Person> getPersons(InputStream inStream) throws Throwable{
List<Person> persons = new ArrayList<Person>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document documnet = builder.parse(inStream);
Element root = documnet.getDocumentElement();
NodeList personNodes = root.getElementsByTagName("person");
for(int i=0 ; i < personNodes.getLength(); i++){
Person person = new Person();
Element personElement = (Element)personNodes.item(i);
person.setId(new Integer(personElement.getAttribute("id")));
NodeList personChilds = personElement.getChildNodes();
for(int y=0 ; y < personChilds.getLength(); y++){
if(personChilds.item(y).getNodeType()==Node.ELEMENT_NODE){//判断当前节点是否是元素类型节点
Element childElement = (Element)personChilds.item(y);
if("name".equals(childElement.getNodeName())){
person.setName(childElement.getFirstChild().getNodeValue());
}else if("age".equals(childElement.getNodeName())){
person.setAge(new Short(childElement.getFirstChild().getNodeValue()));
}
}
}
persons.add(person);
}
return persons;
}
}
3:测试类
public void testDomGetPersons() throws Throwable{
InputStream inStream = getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = DOMPersonService.getPersons(inStream);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}
可参考:http://www.cnblogs.com/zhangdongzi/archive/2011/04/14/2016434.html
分享到:
相关推荐
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...
本文将深入探讨如何使用DOM(Document Object Model)解析XML在Android应用中的实践。DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因...
三、Pull解析器解析XML文件 Android提供了XMLPullParser,这是一种基于事件的轻量级解析器,适合移动设备资源有限的环境。使用Pull解析器的主要步骤: 1. 创建XMLPullParser实例,通常使用XMLPullParserFactory和...
本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和...
本篇将深入探讨Android中解析XML文件的方法,以及如何通过示例代码`ReadXmlConfigFile`来实现这一过程。 ### XML解析器类型 Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document ...
总结,Android解析XML的三种方法——SAX、DOM和PULL,各有适用场景。理解它们的工作原理和优缺点,可以帮助我们更好地选择和运用XML解析技术,提高应用的效率和用户体验。在实践中不断学习和探索,才能真正掌握这些...
例如,你可以使用`DocumentBuilderFactory`来创建`DocumentBuilder`,然后用`parse()`方法解析XML文件。在提供的`DomXmlOperate`示例中,可能包含了如何使用DOM解析XML并绑定到View(如使用ButterKnife库)的代码。 ...
本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...
本文将详细介绍Android中三种解析XML文件的方法:SAX解析、DOM解析以及Android内置的Pull解析。 1. **SAX解析(Simple API for XML)**: - SAX解析是一种基于事件驱动的解析方式,它不会一次性加载整个XML文档到...
老罗的Android视频教程深入浅出地讲解了如何在Android平台上解析XML文件,这对于开发者来说是非常重要的技能。以下是对这个主题的详细解释。 1. **XML基本概念** XML是一种自描述的语言,其结构清晰,易于机器和...
总结来说,Android上使用DOM解析XML是一种常见且强大的方法,适用于处理小到中等大小的XML文件。通过理解DOM模型和相应的API,开发者可以高效地解析XML数据,为应用程序提供丰富的信息处理能力。然而,对于大型XML...
本文将深入探讨解析XML的三种主要方法:DOM(Document Object Model)、SAX(Simple API for XML)和PULL解析。 1. DOM解析: DOM是W3C推荐的标准解析方式,它将整个XML文档加载到内存中,构建一个树形结构,称为...
在Android应用开发中,处理XML数据是常见的任务之一,无论是从网络获取数据还是读取本地资源,解析XML都是必不可少的步骤。本资料包主要涵盖了两种常见的XML解析方式:DOM(Document Object Model)和Pull解析器。...
本文将深入探讨在Android环境中解析XML的四种主要方法:DOM、SAX、Pull Parser以及XMLPullParser。 1. DOM解析器: DOM(Document Object Model)是一种将XML文档加载到内存中形成一棵树形结构的方法。它一次性读取...
在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...
本篇文章将深入探讨如何使用DOM(文档对象模型)解析XML文件,并将其内容显示在应用程序的用户界面上。 首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它...
本篇文章将深入探讨Android中解析XML的三种主要方法,并通过一个名为"XMLParserDemo"的示例项目来详细阐述每种方法的实现步骤。 ### 1. DOM解析器 DOM(文档对象模型)解析器将整个XML文档加载到内存中,形成一个...
本教程将深入讲解如何在Android中解析XML文件,帮助开发者更好地理解和运用这一核心技术。 首先,Android提供了两种主要的XML解析方式:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。DOM解析...
总的来说,DOM解析XML在Android中是一种常用且灵活的方法,尤其适合处理小型XML文件。但要注意根据项目需求选择合适的解析策略,确保性能和资源的合理利用。在实际编码过程中,结合具体的业务场景和XML文件大小,...
本文主要介绍了四种在Java和Android中解析XML文件的方法:DOM、SAX、JDOM和DOM4J。 1. DOM(Document Object Model)解析: DOM是W3C推荐的标准,它将XML文档解析为一个节点树,允许开发者在整个树结构中查找和操作...