开发中比较常见的解析方式有三种,如下:
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("");
}
}
}
输出:
3056

被折叠的 条评论
为什么被折叠?



