欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dom解析XML文件

程序员文章站 2022-03-03 16:21:06
...

DOM解析xml文件的原理是把xml文件的文档树对象全部加载到内存中,然后解析,这种解析方式的缺点在于在手机、pad等CPU运算速度不快,内存有限的设备上会影响软件效率和系统性能。

使用DOM技术解析XML文件案例:

 

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="1">
		<name>maomao</name>
		<age>26</age>
	</person>
	<person id="2">
		<name>hy</name>
		<age>27</age>
	</person>
</persons>
    

解析代码:

 

	public static List<Person> domParse(InputStream inStream) throws Exception {
		List<Person> persons = new ArrayList<Person>();
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse(inStream);
		// 获得根节点
		Element root = document.getDocumentElement();
		NodeList personElements = root.getElementsByTagName("person");
		for(int i=0; i<personElements.getLength(); i++) {
			Person person = new Person();
			Element personElement = (Element) personElements.item(i);
			person.setId(Integer.parseInt(personElement.getAttribute("id")));
			// 获得person元素节点下所有的节点,其中包含文本节点和元素节点
			NodeList personChilds = personElement.getChildNodes();
			for(int j=0; j<personChilds.getLength(); j++) {
				// 判断节点是否为元素节点
				if(personChilds.item(j).getNodeType() == Node.ELEMENT_NODE) {
					Element element = (Element)personChilds.item(j);
					if(element.getNodeName().equals("name")) {
						// 取得元素节点第一个节点的值
						person.setName(element.getFirstChild().getNodeValue());
					} else if(element.getNodeName().equals("age")) {
						person.setAge(new Short(element.getFirstChild().getNodeValue()));
					}
				}
			}
			persons.add(person);
		}
		return  persons;
	}
相关标签: XML J#