`

dom读取xml文档---android

阅读更多

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

 

关键代码一

package com.leequer.Service;


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

import com.leequer.Doem.Person;


import android.test.AndroidTestCase;
import android.util.Log;

public class Test extends AndroidTestCase {
 private String PERSONSTRING = "ObjectPerson";
 public void testReadXml() throws Exception
 {//类装载器
  InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("NewFile.xml");
  
  List <Person> personsList = ReadXmlByDomService.ReadXmlByDom(inputStream);
  
  for (Iterator iterator = personsList.iterator(); iterator.hasNext();) {
   Person person = (Person) iterator.next();
   Log.i(PERSONSTRING, person.toString());
  }
  
 }
}

关键代码二

package com.leequer.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.leequer.Doem.Person;
/**
 * 使用dom解析xml
 * 2010-04-26
 * @author leequer
 *
 */
public class ReadXmlByDomService {
 
 public static List<Person> ReadXmlByDom (InputStream inputStream)throws Exception
 {
  List <Person> personList = new ArrayList<Person>();
  //创建文档读取工厂
  DocumentBuilderFactory documentBuilderFactory  = DocumentBuilderFactory.newInstance();
  //创建读去对象
  DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
  //对以输入流方式传进来的信息进行解析 整个xml文档就以树的形式存在document中
  Document document = builder.parse(inputStream);
  //得到根元素
  Element root = document.getDocumentElement();
  //得到person元素节点 这个对象中就存在persons下面的所以节点 就是很多的person节点
  NodeList nodes = root.getElementsByTagName("person");
  for(int i= 0 ;i<nodes.getLength();i++)
  {
   /**
    * persons下面的节点是元素节点 person 用element就行了
    */
   Element element = (Element)nodes.item(i);
   Person person = new Person();
   person.setId(element.getAttribute("id"));//属性
   /**
    * perons节点中包含的有元素节点name age 和文本节点 23 李明 所以我们迭代的时候要用note
    */
   NodeList childnotes = element.getChildNodes();//得到子节点的列表
   for (int j = 0 ; j < childnotes.getLength();j++)
   {
    Node node = (Node)childnotes.item(j);
    /**
     * node中有元素 也有文本节点 还包括回车和空格的文本节点 但是我们不关心回车和空格
     */
    if(node.getNodeType()==Node.ELEMENT_NODE)
    {
     //如果是element节点 把它转换成element
     Element childElement = (Element)node;
     if("name".equals(childElement.getNodeName()))
     {
      person.setName(childElement.getFirstChild().getNodeValue());
     }
     if("age".equals(childElement.getNodeName()))
     {
      person.setAge(childElement.getFirstChild().getNodeValue());
     }
    }
   }
   personList.add(person);
  }
  return personList;
 }
}

分享到:
评论

相关推荐

    DOM读取XML文件

    DOM解析器将整个XML文件加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML文档。这种方式的优点在于方便、直观,但缺点是占用内存较大,不适用于处理大型XML文件。 首先,我们需要了解XML的...

    Android Dom解析XML

    DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因消耗大量内存而效率低下,但在处理小型XML文件时,DOM方法具有简洁和方便的优点。 ...

    android Dom解析xml文件

    DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的...

    android上使用DOM解析XML

    在Android中,可以通过`FileInputStream`或`AssetManager`从文件系统或资源中读取XML文件。 5. **解析XML** `parse()`方法返回一个`Document`对象,它是整个XML文档的根节点。可以使用`Document`对象提供的方法如`...

    JAVA XML dom4j-1.6.1

    总的来说,dom4j-1.6.1为Java Android开发者提供了一套全面的工具,便于处理XML文档,无论是在应用配置、数据存储还是与其他系统交换数据时,都是一个值得信赖的选择。通过熟练掌握dom4j,开发者可以更高效地管理和...

    Android使用DOM方式解析XML

    DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它将整个XML文件加载到内存中,形成一个完整的节点树,从而可以方便地遍历和修改XML文档的任何部分。在Android中,我们通常使用`javax.xml.parsers....

    xml.rar_DOM4J ANDROID_XML DOM_android xml_android dom_androiddo

    相比于DOM,DOM4J更适合处理大型XML文档,因为它提供了一些高级功能,如XPath查询。在Android中引入DOM4J库后,可以像这样解析XML: ```java SAXReader reader = new SAXReader(); Document document = reader.read...

    dom4j-2.1.1.zip

    DOM4J作为一个解析器,提供了对XML文档的全面支持,包括读取、写入、修改以及查询XML内容。它不仅支持DOM(Document Object Model)接口,还提供了SAX(Simple API for XML)和StAX(Streaming API for XML)的接口...

    Dom方式解析XML

    DOM是一种将XML文档映射成内存中的树形结构的解析方式,它允许开发者通过节点操作来访问和修改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.docx

    - **org.w3c.dom**: W3C提供的DOM接口,用于读取XML文档。 - **org.xml.sax**: 提供核心SAX API。 - **org.xmlpull.v1**: 用于XML拉取解析,适用于数据写入XML文档。 此外,`android.util.Xml`提供了一个简单的封装...

    dom4j-1.6.1的包

    DOM4J 是一个强大的 Java XML API,它提供了全面的 XML 解析、操作以及文档构建功能。这个包“dom4j-1.6.1”是 DOM4J 的一个特定版本,包含了该库的所有组件和资源,适用于 Android 平台的 XML 解析需求。在你的博客...

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

    DOM解析器会加载整个XML文档到内存中,创建一个树形结构的文档对象模型。这意味着它可以提供对XML文档的随机访问,允许开发者轻松地遍历和修改XML节点。然而,DOM解析器对于大文件来说可能不太适用,因为它需要消耗...

    Android应用源码之xml-dom201311060201.zip

    2. **DOM解析原理**:DOM解析器读取整个XML文档并构建一个内存中的节点树。每个节点代表XML文档的一部分,如元素、属性、文本等。开发者可以通过遍历这棵树来访问或修改XML数据。 3. **Android中的DOM解析**:在...

    DOM解析xml文件实例讲解

    在Android开发中,DOM(Document Object Model)解析是处理XML文档的一种常见方法,它提供了一种结构化的表示XML文档的方式,并允许开发者通过编程接口与XML数据进行交互。本篇文章将深入探讨DOM解析XML文件在...

    Android读取DOM文件

    DOM(Document Object Model)是一种处理XML的标准方式,它将整个XML文档加载到内存中并提供一系列方法来访问和修改文档中的元素。本文将详细介绍如何在Android应用程序中读取DOM格式的XML文件。 #### 二、关键技术...

    安卓Android源码——xml-dom201311060201.rar

    Android SDK提供了`org.w3c.dom`和`javax.xml.parsers`两个包,用于处理XML文档。其中,`DocumentBuilderFactory`用于创建`DocumentBuilder`对象,`DocumentBuilder`则负责解析XML文件并构建`Document`对象。通过`...

    Android读取XML文件(DOM)

    DOM(Document Object Model)是一种解析XML的标准方法,它将整个XML文档加载到内存中形成一个树形结构,允许开发者通过节点遍历来访问和操作XML内容。本文将深入探讨如何在Android应用中使用DOM解析XML文件。 首先...

    android下解析xml文件的demo

    DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历和修改XML文档的任何部分。然而,由于它需要一次性加载整个文件,对于大文件来说可能会消耗大量内存。 在"ReadXMLDemo"中,使用DOM解析的...

Global site tag (gtag.js) - Google Analytics