java 使用dom4j解析xml

xiaoxiao2025-11-14  10

准备工作

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()); } }

 

转载请注明原文地址: https://www.6miu.com/read-5039613.html

最新回复(0)