Android使用DOM解析xml
来源:互联网 发布:jquery.metismenu.js 编辑:程序博客网 时间:2024/06/02 19:16
除了使用 SAX可以解析XML文件,大家也可以使用熟悉的DOM来解析XML文件。 DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使用DOMAPI遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来是比较直观的,并且在编码方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM也是可行的。
下面是实现代码
package com.scl.parse;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.scl.domain.Person;public class DOMParsePerson {public List<Person> getPersons(InputStream in) throws Throwable{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();//装载成document树对象Document document = builder.parse(in);//获得根节点Element root = document.getDocumentElement();//获得根节点的子节点NodeList persons = root.getElementsByTagName("person");//遍历所有person节点List<Person> personsList = new ArrayList<Person>();for(int i = 0;i < persons.getLength(); i ++){Person person = new Person();//获得一个person节点Element personElement = (Element)persons.item(i);//获得一个person节点的id属性,并把id的值设置给personperson.setId(new Integer(personElement.getAttribute("id")));NodeList childNodes = personElement.getChildNodes();//循环person节点的子节点for(int j = 0;j < childNodes.getLength();j++){Node child = childNodes.item(j);if(child.getNodeType() == Node.ELEMENT_NODE){Element e = (Element)child;if("name".equals(child.getNodeName())){person.setName(child.getFirstChild().getNodeValue());}else if("age".equals(child.getNodeName())){person.setAge(new Short(child.getFirstChild().getNodeValue()));}}}personsList.add(person);}return personsList;}}
下面是单元测试代码
public void testDOMParserTest() throws Throwable{InputStream in = this.getClass().getClassLoader().getResourceAsStream("person.xml");DOMParsePerson dom = new DOMParsePerson();List<Person> persons = dom.getPersons(in);for(Person p : persons){Log.i(TAG, p.toString());}}
- Android使用DOM解析xml
- android使用dom解析xml
- Android演示使用DOM解析xml文件
- Android使用DOM方式解析XML
- Android解析XML方式(三)使用DOM解析XML
- Android解析XML方式(三)使用DOM解析XML
- Android--xml解析(Dom)
- Android--DOM解析XML
- Android DOM解析XML
- Android DOM解析XML
- android--------------xml Dom解析
- android DOM解析Xml
- Android DOM解析XML
- Android DOM解析xml
- android DOM解析XML
- android DOM解析Xml
- Android--xml解析(Dom)
- Android:Dom解析XML
- 你不可不知的Mango — 开发者篇(1) .
- MINI2440 按键输入子系统 驱动及测试代码分析
- Android使用Pull解析器解析XML文件
- Virtualenv部署
- 关闭窗体,避免两次弹出提示框的尴尬
- Android使用DOM解析xml
- 使用TFS2010管理敏捷项目生命周期-系列指南2 生命周期管理的内容
- JUnit使用方法
- 2011-9-26 4:17:47
- ftp连接ubuntu
- 你不可不知的Mango — 开发者篇(2) .
- 从C语言过渡到C++并不容易啊,大家说呢?
- SecureCRT 连接断开问题
- CTeX学习心得2011.9.18总结