版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36783389/article/details/83387713
准备工作
1.在src根目录下新建一个xml文件,如果是idea里的maven项目也可以将xml文件放在resources文件夹下,再点击project structure选中该文件夹点击mark as 中的Resources
2.如果是普通java项目需要导入dom4j的包,如果是maven项目需要引入相关依赖
注:dom4j支持xpath用法不过在使用前需要引入依赖
下面附上maven需要的相关依赖
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<!-- dom4j的依赖 -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jaxen/jaxen -->
<!-- 使用xpath需要引入的包 -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
我建立的xml文件stu.xml
<?xml version="1.0" encoding="UTF-8" ?>
<stus>
<stu id ="10001">
<name>张三</name>
<age>18</age>
<address>北京</address>
</stu>
<stu id ="10002">
<name>李四</name>
<age>20</age>
<address>深圳</address>
</stu>
</stus>
第一种方式使用SAX的方式解析xml
package xml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class SAXReaderTest {
public static void main(String[] args) {
//1. 创建sax读取对象
SAXReader saxReader =new SAXReader();
try {
//2. 指定解析的xml源
//通过classLoder的方法加载stu.xml文件
Document document = saxReader.read(SAXReaderTest.class.getClassLoader().getResourceAsStream("stu.xml"));
//3.获取文件根目录
Element rootElement = document.getRootElement();
//打印xml源中的第一个name属性的值
System.out.println(rootElement.element("stu").element("name").getText());
//获取根元素下面的所有子元素 stu元素
List<Element> elements = rootElement.elements();
//遍历所有的stu元素
for (Element element : elements) {
//获取stu元素下面的name元素
String name = element.element("name").getText();
String age = element.element("age").getText();
String address = element.element("address").getText();
System.out.println("name="+name+",age="+age+",address="+address);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
第二种方式使用DOM的方式解析xml
package xml;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
public class DomReaderText {
public static void main(String[] args) {
//创建工厂对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
org.w3c.dom.Document orgdoc = null;
{
try {
db = dbf.newDocumentBuilder();
//通过类加载器读入xml文件
File file = new File(DomReaderText.class.getClassLoader().getResource("stu.xml").getPath());
//通过DocumentBuilder 解析文件返回 org.w3c.dom.Document对象
orgdoc = db.parse(file);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//新建一个DOMReader对象
DOMReader domReader = new DOMReader();
//DOMReader 读入 org.w3c.dom.Document 对象
Document document = domReader.read(orgdoc);
Element rootElement = document.getRootElement();
Element element = (Element) rootElement.selectSingleNode("//stu[@id='10001']/name");
System.out.println(element.getText());
}
}