1.創建解析工廠
2.創建解析器
3.讀xml文件,生成w3c.docment對象樹
4.創建XPath對象
5.通過路徑查找對象
例子:
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; public class MyXPathTest { /** * @param args */ public static void main(String[] args) { try { //創建解析工廠 DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance(); //創建解析器 DocumentBuilder builder=documentBuilderFactory.newDocumentBuilder(); //通過解析器讀取文件,生成w3c.dom.Document象樹 Document document=builder.parse("conf/55.xml"); //創建XPath對象 XPath xPath=XPathFactory.newInstance().newXPath(); // <Model id="057ea377-e531-422d-a181-3371b42e5bd0"> // <Ref> // <node></node> // <node></node> // </Ref> // <Ref> // <node></node> // <node></node> // </Ref> // </Model> //讀取Model中屬性id的值 String idPath="/Model/@id"; String id=(String) xPath.evaluate(idPath, document, XPathConstants.STRING); System.out.println("id="+id); // <Model> // <Ref> // <node></node> // <node></node> // </Ref> // <Ref> // <node id="057ea377-e531-422d-a181-3371b42e5bd0" nodetype="DynamicMoleNode"></node> // <node></node> // </Ref> // </Model> String idNodePath="/Model/node[@nodetype='DynamicMoleNode']/@id"; String idNode=(String) xPath.evaluate(idNodePath, document, XPathConstants.STRING); System.out.println("idNode="+idNode); // <Model> // <Ref> // <node></node> // <node></node> // </Ref> // <Ref> // <node id=" nodetype="DynamicMoleNode"> // <node rtf="aaaaaaaa" nodetype="Text" /> // </node> // <node></node> // </Ref> // </Model> String rtfPath="/Model/node[@nodetype='DynamicMoleNode']/node[@nodetype='Text']/@rtf"; String rtf=(String) xPath.evaluate(rtfPath, document, XPathConstants.STRING); System.out.println("rtf="+rtf); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
同一xpath路徑下有多個Element對象
String path="/XTextDocument/XElements/Element[@type='XTextBody']/XElements/Element";
NodeList nodeList=(NodeList) xPath.evaluate(path,document, XPathConstants.NODESET); System.out.println("nodeList===="+nodeList.getLength());