`

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;
 }
}

分享到:
评论

相关推荐

    dom4j-2.1.1-API文档-中英对照版.zip

    包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.dom4j:dom4j:2.1.1; 标签:dom4j、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开...

    【Qt】DOM读取XML文档.rar

    【Qt】DOM读取XML文档.rar

    利用dom4j--读取xml文件

    利用dom4j--读取xml文件。 代码简洁易懂。

    QT使用SAX读取xml高效-快速.rar

    如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取较大的文件 SAX只能读取,不能写入 博文链接:...

    perl-XML-DOM-1.44-7.el6.noarch.rpm

    perl-XML-DOM-1.44-7.el6.noarch.rpm perl-XML-DOM-1.44-7.el6.noarch.rpm

    dom4j-2.1.1-API文档-中文版.zip

    包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.dom4j:dom4j:2.1.1; 标签:dom4j、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    DOM读取XML文件

    android dom解析XMl文件,这是一个简单的小示例,希望对大家有所帮助

    使用DOM解析XML文档

    文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    dom4j-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar

    DOM解析XML文档

    DOM解析XML文档DOM解析XML文档DOM解析XML文档

    html练习之DOM知识---银行系统

    html练习之DOM知识---银行系统 html练习之DOM知识---银行系统 html练习之DOM知识---银行系统 html练习之DOM知识---银行系统 html练习之DOM知识---银行系统 html练习之DOM知识---银行系统 html练习之DOM知识---银行...

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    dom4j---xml解析包

    dom4j---xml解析包,xml解析和以及使用java编写生成xml文件,两种使用方式,复杂和简单,必备神器

    DOM操作XML文档

    学习XML语言很重要的一章节,其中的第八章节,掌握如何用DOM操作XML文档

    Android Dom解析XML

    Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife

    android Dom解析xml文件

    包括android代码实例以及个人对Dom解析xml文件的总结文档。

    Dom4j解析XML文档.doc

    Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc

    Dom文档对象模型-2010

    Dom文档对象模型-2010版,对各种Dom 模型进行介绍,转载自 web圈。 Dom文档对象模型-2010版,对各种Dom 模型进行介绍,转载自 web圈。 Dom文档对象模型-2010版,对各种Dom 模型进行介绍,转载自 web圈。

    xml-DOM教学PPT

    xml dom xml-DOM教学PPT

    使用DOM读取XML文件

    NULL 博文链接:https://justsee.iteye.com/blog/923633

Global site tag (gtag.js) - Google Analytics