使用Dom4j解析XML文档
Dmo4j是什么?
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的,dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点.
使用Dom4j解析xml文件的原理
DOM 将整个XML文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作.
结构模型
-
代码
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="0001"> <name>JavaWeb开发教程</name> <author>张孝祥</author> <sale>100.00元</sale> </book> <book id="0002"> <name>三国演义</name> <author>罗贯中</author> <sale>100.00元</sale> </book> </books>
-
模型
DOM中的核心概念就是节点,在XML文档中的元素、属性、文本,在DOM中都是节点!所有的节点都封装到了Document对象中。
Dom4j的使用
- 导入jar包
-
使用的总概念
dom4j 必须使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,然后就可以操作了。
-
常用方法
-
SAXReader对象
1.new SAXReader() -> SAXReader的构造方法, 用于创建其实例对象 2.Document read(String url) -> read方法, 用于指定要加载的xml文件, 参数指定xml文件所在的地址, 返回一个Document对象
-
Document对象
Element getRootElement() -> 获得根元素
-
Element对象
1.List elements([String element]) -> 获取指定名称的所有子元素, 可以不指定名称 2.Element element([String ele]) -> 获得指定名称第一个子元素。可以不指定名称 3.String getName() -> 获得当前元素的元素名 4.String attributeValue(String attrName) -> 获得指定属性名的属性值 5.String elementText(Sting ele) -> 获得指定名称子元素的文本值 6.String getText() -> 获得当前元素的文本内容
-
解析代码实现
-
xml文件
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="0001"> <name>JavaWeb开发教程</name> <author>张孝祥</author> <sale>100.00元</sale> </book> <book id="0002"> <name>三国演义</name> <author>罗贯中</author> <sale>100.00元</sale> </book> </books>
-
解析代码
public class Demo { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(Demo.class.getResourceAsStream("/books.xml")); //获取根元素 books Element elemRoot = document.getRootElement(); //获取根元素的所有子元素 book List<Element>list = elemRoot.elements(); //遍历集合 获取每一个book for(Element element : list){ //获取book的id属性 String id =element.attributeValue("id"); System.out.println("id : "+ id); //获取book下的所有子元素 name,author,sale List<Element>listElem = element.elements(); //遍历集合 获取每一个子元素 for(Element elem : listElem){ //元素名 String name = elem.getName(); //文本值 String text = elem.getText(); System.out.println("--- " + name + " : " + text); } } } }
-
-