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里面所含值!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值