xml解析

开发中比较常见的解析方式有三种,如下:
DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。
优点:元素与元素之间保留结构关系,故可以进行增删改查操作。
缺点:XML文档过大,可能出现内存溢出显现。

SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)
优点:处理速度快,可以处理大文件
缺点:只能读,逐行后将释放资源。

PULL:Android内置的XML解析方式,类似SAX。

DOM解析原理及结构模型:



DOM中的核心概念就是节点,在XML文档中的元素、属性、文本等,在DOM中都是节点!



具体Demo:

beans.xml内容是:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<bean id="beanId01" className="com.umanwu.domain.User">
		<property name="uid" value="u001"></property>
		<property name="username" value="jack"></property>
	</bean>
	
	<bean id="beanId02" className="com.umanwu.domain.Book">
		<property name="bid" value="b001"></property>
		<property name="title" value="标题"></property>
	</bean>

</beans>
package com.umanwu_01_dom4j;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class Dom4jDemo_01 {
	
	@Test
	public void demo01() throws DocumentException{
		
		//1 核心类
		SAXReader saxReader = new SAXReader();
		
		//2 获得Document(整个xml)
		Document document = saxReader.read("beans.xml");
		
		//3 获得根元素 beans
		Element rootElement = document.getRootElement();
		
		//4 所有子元素 bean
		List<Element> allBeanElement = rootElement.elements("bean");
		for (Element beanEle : allBeanElement) {
			//4.1 bean属性
			String id = beanEle.attributeValue("id");
			String className = beanEle.attributeValue("className");
			System.out.println("bean属性:" + id + " , " + className);
			
			//5 元素property
			List<Element> allPropElement = beanEle.elements("property");
			for (Element propEle : allPropElement) {
				String name = propEle.attributeValue("name");
				String value = propEle.attributeValue("value");
				System.out.println("property属性:" + name + " , " + value);
			}
			System.out.println("");
		}
	}
}
输出:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值