`
xiang37
  • 浏览: 428278 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android读取XML文件(DOM)

阅读更多

 

package com.xiva.service;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


import com.xiva.domain.Person;

/**
 * @decription 适合解析小存储的xml文件
 * @author XIVA
 *
 */
public class DOMService {
	
	public static List<Person> readXML(InputStream is) throws Exception
	{
		List<Person> personList = new ArrayList<Person>();
		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder dombuilder        = domFactory.newDocumentBuilder();
		Document document = dombuilder.parse(is);
		Element root      = document.getDocumentElement();
		NodeList nodes    = root.getElementsByTagName("person");
		
		for(int i=0;i<nodes.getLength();i++){
			
			Element element = (Element) nodes.item(i);
			Person person = new Person();
			person.setId(new Integer(element.getAttribute("id")));
			NodeList childNodes = element.getChildNodes();
			for(int j=0;j<childNodes.getLength();j++){
				
				Node childNode = (Node) childNodes.item(j);
				if(childNode.getNodeType() == Element.ELEMENT_NODE)
				{
					Element childElement = (Element) childNode;
					childElement.getLocalName();
					childElement.getNodeName();
					childElement.getNodeValue();
					childElement.getTagName();
					if("age".equals(childElement.getTagName()))
					{
						person.setAge(childElement.getFirstChild().getNodeValue());
					}else if("name".equals(childElement.getTagName())){
						person.setPersonName(childElement.getFirstChild().getNodeValue());
					}
				}
			}
			personList.add(person);
		}
		
		return personList;
	}
}

 完整代码见附件,DOM与SAX解析的区别在于SAX解析需要一个handler,并触发handler里面的所有事件;而DOM的解析主要需要分析NodeList里面所含值!

 

分享到:
评论

相关推荐

    DOM读取XML文件

    在Android开发中,DOM(Document Object Model)解析是一种常见的处理XML文件的方式。DOM解析器将整个XML文件加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML文档。这种方式的优点在于方便...

    Android读取XML文件(SAX)

    最后,使用创建的解析器和处理器读取XML文件: ```java InputStream is = context.getResources().openRawResource(R.raw.xmlFile); // 获取XML文件输入流 saxParser.parse(is, new MyHandler()); is.close(); ``` ...

    android下解析xml文件的demo

    SAX解析器是事件驱动的,它逐行读取XML文件,遇到每个元素时触发相应的事件。这种方式适用于处理大型XML文件,因为它不需要一次性加载整个文件。 在"ReadXMLDemo"中,使用SAX解析的步骤如下: - 实现`...

    android 读取Excel文件转成xml文件

    1. **Android读取Excel文件**: - Android本身并不支持直接读取Excel文件,因为这些文件通常由Microsoft Office或类似的桌面应用程序创建。要读取Excel文件,需要引入第三方库,如jxl.jar,这是一个Java库,可以...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    android 解析XML文件 生成XML文件

    在Android开发中,XML文件广泛用于存储数据、配置文件以及应用程序间的数据交换。本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 ...

    Android Dom解析XML

    DOM解析器读取XML文件并构建一个内存中的节点树,其中每个元素、属性、文本等都对应一个节点。在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`来创建解析器,并通过`DocumentBuilder`实例解析...

    Android读取DOM文件

    ### Android读取DOM文件知识点详解 #### 一、概述 在Android开发中,XML文件是一种常用的数据存储格式,尤其适用于存储结构化的数据。DOM(Document Object Model)是一种处理XML的标准方式,它将整个XML文档加载...

    Android 解析xml文件

    2. **SAX解析器**:Simple API for XML(SAX)解析器采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应的回调函数,不会一次性加载整个文件,适合处理大文件。 3. **Pull解析器**:类似于SAX解析器,...

    xml.rar_DOM4J ANDROID_XML DOM_android xml_android dom_androiddo

    对于XML的读取,有多种方法,其中DOM(Document Object Model)和DOM4J是比较常见的。 1. DOM解析: DOM解析方式将整个XML文件加载到内存中,形成一个树形结构。这种方式便于对XML进行随机访问,但缺点是对大文件...

    android程序读取网上xml文件

    在Android开发中,读取网上XML文件是一项常见的任务,尤其当需要从远程服务器获取结构化数据时。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,它的结构清晰,易于解析。本篇文章将深入...

    PHP 读取 Android APK XML文件,无需JDK

    总结来说,通过PHP的ZipArchive类,我们能够方便地读取Android APK文件内的XML资源,这对开发者在分析、测试或自动化处理APK时提供了一种有效且独立的解决方案。这种方法不仅简化了流程,也降低了对系统环境的要求,...

    [Android实例] Android之解析XML文件

    SAX是一种基于事件驱动的XML解析方式,其工作原理是在读取XML文档时,每当遇到特定的事件(如开始标签、结束标签等)时触发相应的事件处理方法。与DOM(Document Object Model)解析方式不同,SAX不需要将整个XML...

    Android XML解析(DOM、PULL、SAX三种方式)

    SAX解析器逐行读取XML文件,当遇到特定的标签时,会触发回调函数。这种方式非常适用于处理大型XML文件,因为它只占用少量内存。在Android中,可以使用`org.xml.sax`包下的类来实现SAX解析。`DomXmlOperate`中可能...

    老罗Android视频开发教程 android解析xml文件代码

    SAX(Simple API for XML)是事件驱动的解析器,逐行读取XML,触发相应的事件处理器。这种方式内存效率高,适用于处理大文件。 - **Pull解析器(android_pull_xml)** Pull解析器也是事件驱动,但它允许开发者...

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    Android使用DOM方式解析XML

    Android提供了多种方式来读取XML资源,包括从assets目录、res/raw目录或网络中加载。这里我们假设XML文件已经存储在项目的assets目录下,名为“myxml.xml”。 ```java InputStream inputStream = context.getAssets...

    Android xml文件读取库

    2. SAX解析器:与DOM不同,SAX采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应的回调函数。这种方式适用于处理大文件,因为它不需要一次性加载整个XML。然而,SAX解析器需要开发者手动编写回调函数...

Global site tag (gtag.js) - Google Analytics