使用Java解析XML
阿新 • • 發佈:2018-10-04
word tel class roo 內容 select 屬性 葉子節點 介紹
一.解析的對象
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<username>小丁</username>
<password>123</password>
</user>
<user id="2">
<username>小彭</username>
<password>123</password >
</user>
</users>
二.解析的方法介紹
1.DOM(docuement object model)解析
把所有的XML內容讀到內存中,形成樹狀結構。這個樹狀結構是一個對象,名字叫docuement
DOM解析中的一些術語
Doucment:整個對象(整顆數)
Element:元素,就是標簽,上面的users,user,username,password四個標簽
Attribute:屬性,user標簽中的id屬性
Text:文本,標簽中的內容,上圖最下面的葉子節點。
Node:上面四個都可以叫Node
2.SAX(simple API for XML)
SAX一條條讀到內存並解析
三.代碼實現
使用dom4j(一個API,封裝了我們需要的方法)
下載地址 https://dom4j.github.io/
第一種實現 導入dom4j的jar:
package xmlDemo;
import java.io.File;
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 UserTest {
@Test
public void DOMTest() {
try {
SAXReader reader = new SAXReader();
// 讀取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 獲得根元素
Element rootElement = document.getRootElement();
// 獲取根元素下的所有子元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
String username = element.element("username").getText();
String password = element.element("password").getText();
System.out.println("username=" + username + " password=" + password);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
結果:
第二種XPath: 導入dom4j jar 包外還需導入
package xmlDemo;
import java.io.File;
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 UserTest {
@Test
public void XPathTest() {
try {
SAXReader reader = new SAXReader();
// 讀取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 獲得根元素
Element rootElement = document.getRootElement();
//選擇所有的username元素對象
List<Element> nodes = rootElement.selectNodes("//username");
for (Element element : nodes) {
System.out.println("username="+element.getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
結果:
使用Java解析XML