先是 Jdom 在 dom 基础上进行了封装,而 dom4j 又对 jdom 进行了封装。
DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。
去官网下载需要的 jar 包:Dom4J官网
步骤:
1、先加载 xml 文件创建 Document 对象
2、通过 Document 对象拿到根元素对象
3、通过根元素.elelemts(标签名); 可以返回一个集合, 这个集合里放着。 所有你指定的标签名的元素对象
4、获取需要操作的元素,进行相应的操作
XML 文件:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <books>
3 <book sn="123">
4 <name>Java</name>
5 <price>9.9</price>
6 <author>老张</author>
7 </book>
8 <book sn="456">
9 <name>Python</name>
10 <price>99.99</price>
11 <author>老李</author>
12 </book>
13 </books>
测试解析文件:
1 /*
2 * dom4j 获取 Documet 对象
3 */
4 @Test
5 public void getDocument() throws DocumentException {
6 // 要创建一个 Document 对象, 需要我们先创建一个 SAXReader 对象
7 SAXReader reader = new SAXReader();
8 // 这个对象用于读取 xml 文件, 然后返回一个 Document。
9 Document document = reader.read("src/books.xml");
10 // 打印到控制台, 看看是否创建成功
11 System.out.println(document);
12 }
解析XML文件:
1 /*
2 * 读取 xml 文件中的内容
3 */
4 @Test
5 public void readXML() throws DocumentException {
6 // 需要分四步操作:
7 // 第一步, 通过创建 SAXReader 对象。 来读取 xml 文件, 获取 Document 对象
8 // 第二步, 通过 Document 对象。 拿到 XML 的根元素对象
9 // 第三步, 通过根元素对象。 获取所有的 book 标签对象
10 // 第四步, 遍历每个 book 标签对象。 然后获取到 book 标签对象内的每一个元素, 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
11 // 第一步, 通过创建 SAXReader 对象。 来读取 xml 文件, 获取 Document 对象
12 SAXReader reader = new SAXReader();
13 Document document = reader.read("src/books.xml");
14 // 第二步, 通过 Document 对象。 拿到 XML 的根元素对象
15 Element root = document.getRootElement();
16 // 打印测试
17 // Element.asXML() 它将当前元素转换成为 String 对象
18 // System.out.println( root.asXML() );
19 // 第三步, 通过根元素对象。 获取所有的 book 标签对象
20 // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
21 List<Element> books = root.elements("book");
22 // 第四步, 遍历每个 book 标签对象。 然后获取到 book 标签对象内的每一个元素,
23 for (Element book : books) {
24 // 测试
25 // System.out.println(book.asXML());
26 // 拿到 book 下面的 name 元素对象
27 Element nameElement = book.element("name");
28 // 拿到 book 下面的 price 元素对象
29 Element priceElement = book.element("price");
30 // 拿到 book 下面的 author 元素对象
31 Element authorElement = book.element("author");
32 // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
33 System.out.println("书名" + nameElement.getText() + " , 价格:"
34 + priceElement.getText() + ", 作者: " + authorElement.getText());
35 }
36 }
原文:https://www.cnblogs.com/niujifei/p/12404829.html