使用Dom4j解析两个XML文件小练习
score.xml
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student id="1">
<name>张三</name>
<sc>java</sc>
<score>89</score>
</student>
<student id="2">
<name>李四</name>
<sc>sql</sc>
<score>58</score>
</student>
</Students>
Dom4jTest.java
package com.biubiubiu.demo01XML;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;
public class Dom4jTest {
@Test
public void DOM4J() {
try {
//1.获得文件字节输入流,读取XML文件
InputStream is = Dom4jTest.class.getClassLoader().getResourceAsStream("score.xml");
//2.创建文件解析器
SAXReader sr = new SAXReader();
//3.创建文档对象
Document document = sr.read(is);
//4.获取文档中的根元素
Element root = document.getRootElement();
//5.获取子元素
List<Element> element1 = root.elements();
for (Element ele1 : element1) {
//获取元素名称
System.out.println("****" + ele1.getName());
//获取attribute对象,获取元素中的id属性,根据属性名获得属性值
System.out.println(" id:" + ele1.attributeValue("id"));
List<Element> element2 = ele1.elements();
for (Element ele2 : element2) {
//获取标签名称及内容
System.out.println(" "+ele2.getName() + "," + ele2.getText());
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
bookMessage.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">人与自然</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
Dom4jTest2.java
package com.biubiubiu.demo01XML;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class Dom4jTest2 {
@Test
public void Test2() {
try {
InputStream is = Dom4jTest2.class.getClassLoader().getResourceAsStream("bookMessage.xml");
SAXReader sr = new SAXReader();
Document document = sr.read(is);
Element rootElement = document.getRootElement();
List<Element> element1 = rootElement.elements();
for (Element ele1 : element1) {
System.out.println("****" + ele1.getName());
System.out.println(" category:" + ele1.attributeValue("category"));
List<Element> element2 = ele1.elements();
for (int i=0; i<element2.size(); i++) {
//获取标签名称及内容
if(i==0) {
System.out.println(" title标签的属性:" + element2.get(i).attributeValue("lang") +"标签元素内容:"+element2.get(i).getText());
}else {
System.out.println(" "+element2.get(i).getName() + ",标签元素内容:" + element2.get(i).getText());
}
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}