解析获取 Document 对象的代码
第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建 Document
- public void test1() throws Exception {
- //创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
- SAXReader saxReader=new SAXReader();
- Document document =saxReader.read("src/books.xml");
- System.out.println(document);
- }
- package com.atguigu.pojo;
-
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- import org.junit.Test;
-
- import java.math.BigDecimal;
- import java.util.List;
-
- public class Dom4jTest {
- @Test
- public void test1() throws Exception {
- //创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
- SAXReader saxReader=new SAXReader();
- Document document =saxReader.read("src/books.xml");
- System.out.println(document);
- }
-
- @Test
- public void test2() throws Exception {
- //1.读取books.xml文件
- SAXReader reader=new SAXReader();
- //在Junit测试中,相对路径是从模块名开始算
- Document document= reader.read("src/books.xml");
- //2.通过Document对象获取元素
- Element rootElement =document.getRootElement();
- //3.通过根元素获取book标签对象
- //element和elements都是通过标签名查找子元素,有s查的是集合,一堆,没s查的是单个
- List
books =rootElement.elements("book"); - for (Element book :books) {
- //asXML()把标签对象转换为标签字符串
- //elementText直接获取指定标签的文本内容
- String nameText= book.elementText("name");
- String priceText= book.elementText("price");
- String authorText= book.elementText("author");
- String snValue=book.attributeValue("sn");
-
- System.out.println(new Book(snValue,nameText, new BigDecimal(priceText),authorText));
-
- }
-
-
- }
- }
全部代码如上
效果如下:

===============================================================
补充:
- <books>
- <book id="SN001" >
- <name>java编程name>
- <author>白南author>
- <price>9.9price>
- book>
- <book id="SN002" >
- <name>c++编程name>
- <author>
-
- <<<<<<<<<红北
- ]]>
- author>
- <price>19.9price>
- book>
- <book id="sn003" name="python编程" author="蓝东" price="8.8">book>
-
- books>
还有一些特殊字符:

如果想要这样的效果<白南>
则在xml里编写必须
<白南>
不可以<白南>