java 使用dom4j解析xml
阿新 • • 發佈:2018-11-16
準備工作
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());
}
}