------ procedure.xml------
<?xml version="1.0" encoding="UTF-8" ?>
package com.lovo.test;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
/**
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
*/
public class ReadXml {
public static void main(String[] args) throws Exception{
//得到一個讀取器(固定)
SAXReader sax = new SAXReader();
//根據類的路徑 讀取 文件
Document doc =sax.read(ReadXml.class.getResourceAsStream("/procedure.xml"));
//指定要查找的路徑,根路徑用兩個/
String xpath = "//root/procedure";
//執行查詢,返回多個節點放到集合中
List<Element> list = doc.selectNodes(xpath);
//集合循環
for(Element e:list){
//得到當前節點的(第1個)name子節點的文本
String name = e.elementText("name");
System.out.println(name);
//得到當前節點所有叫 param 的子節點
List<Element> listChild = e.elements("param");
//循環
for(Element e2:listChild){
//節點的屬性通常用 valueOf("@屬性名")
System.out.println(e2.valueOf("@index")+","+e2.valueOf("@type")+","+e2.valueOf("@inOutType"));
}
}
//根據屬性直接定位到某一個節點
String xpath2 = "//root/procedure[@id='sp_reg']";
//返回一個節點,Node和Element其實是相同的
Node node = doc.selectSingleNode(xpath2);
// Element ele = (Element)node;
System.out.println(node.valueOf("@desc"));
}
}