1. 核心依赖
-
依赖
<dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.1</version> </dependency>
2. 使用
-
常用
API
// 解析器: org.dom4j.io.SAXReader; SAXReader reader = new SAXReader(); // spring 读取 resources 下的文件 // org.springframework.core.io.ClassPathResource; InputStream inputStream = new ClassPathResource("test/test.xml").getInputStream(); // 获取 document 对象: org.dom4j.Document; Document document = reader.read(inputStream); // 获取根标签:org.dom4j.Element; Element root = document.getRootElement(); // 获取标签名字 element.getName() // 获取 element 对象的迭代器 Iterator<Element> elementIterator = element.elementIterator(); // 获取第一个指定名称的子标签 element.element("name") // 获取指定名称的所有子标签 element.elements("name") // 获取所有子标签 element.elements() // 获取标签名为 name 的子标签的内容,去掉空格、换行符 element.elementTextTrim("name") // 获取标签名为 name 的子标签的内容 element.elementText("name") // 获取内容 element.getText() // 获取内容,去掉空格、换行符 element.getTextTrim() // 获取名为 name 的属性名的值 element.attributeValue("name") // 获取所有的 属性对象 element.attributes() // 获取属性对象的属性名 attribute.getName() // 获取属性对象的值 attribute.getValue()
-
栗子
-
xml
(resources/sql/test.xml)
<?xml version="1.0" encoding="utf-8" ?> <dataSources> <dataSource> <description>dom4j-测试查询</description> <sql id="001" name="sql" haha="2"> select * from dual a left join dual b on a.pkid = b.pkid </sql> </dataSource> </dataSources>
-
测试
public void test() throws DocumentException, IOException { // 获取 xml 解析器 SAXReader reader = new SAXReader(); // 将 resources 下的 sql/test.xml 转换为输入流 InputStream inputStream = new ClassPathResource("sql/test.xml").getInputStream(); // 将输入流转换为 文件对象 Document document = reader.read(inputStream); // 获取根标签对象 Element root = document.getRootElement(); // 获取根标签对象的 迭代器 Iterator<Element> elementIterator = root.elementIterator(); while (elementIterator.hasNext()) { Element element = elementIterator.next(); Iterator<Element> iterator = element.elementIterator(); while (iterator.hasNext()) { Element next = iterator.next(); // System.out.println(next.getText()); // 获取内容,并去掉空格、换行符、回车符等 System.out.println(next.getTextTrim()); } // 获取 sql 子标签的内容,并去掉空格、换行符、回车符等 // System.out.println(element.elementTextTrim("sql")); // 先获取名为 sql 的子标签,然后再获取内容,并去掉空格、换行符、回车符等 // System.out.println(element.element("sql").getTextTrim()); Element sql = element.element("sql"); // 获取 sql 子标签的所有属性 List<Attribute> attributes = sql.attributes(); // 获取名为 id 的属性值 System.out.println(sql.attributeValue("id")); for (Attribute attribute : attributes) { // 打印 属性名 + 属性值 System.out.println(attribute.getName()+ " = " + attribute.getValue()); } }
-