1,入門html
XPath即爲XML路徑語言(XML Path Language),它是一種用來肯定XML文檔中某部分位置的語言。java
XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力。起初 XPath 的提出的初衷是將其做爲一個通用的、node
介於XPointer與XSL間的語法模型。可是 XPath 很快的被開發者採用來看成小型查詢語言。express
2,瞭解數據結構
若是要定位xml文檔中的某一節點,並獲取相應的信息。那麼能夠經過遍歷dom樹的全部節點進行查找。這樣作顯然比較麻煩。dom
因而有了XPat語言來訪問樹的節點比較容易。ui
如:lua
<config> ..... <user> <name>JIMI</name> <gental>male</gental> </user> ..... </config>
下列的操做:code
1,獲得文檔的節點。xml
2,枚舉它的子元素。
3,定位user元素。
4,獲取user元素的第一個元素,即name元素
5,獲取name元素的第一元素,即name標籤裏的內容。(Text節點)
6,獲取Text節點的數據。
XPath能夠用來描述XML文檔中的一組節點。如:
/gridbag/row
表示根元素gridbag的子元素中全部的row元素。能夠用[]操做符來選擇特定的元素。
/gridbag/row[1]
表示row全部元素的第一元素。
使用@操做符能夠獲得元素的屬性。(<user id="1"></user>:其中的id就是user元素的屬性)
/gridbag/row[1]/cell[1]/@author
上面的XPath描述了第一行第一個單元格的author元素。
XPath表達式:/gridbag/row/cell/@author
描述了做爲根元素gridbag的子元素行元素中全部的單元格的author屬性節點。
3,java中的XPath
java使用XPath對象來操做xml文檔
XPathFactory xpfactory = XPathFactory.newInstance();
XPath path = xpfactory.newXPath();
String name = path.evaluate("/config/user/name",(Document)doc);//計算表達獲取相應的name
還有如下的操做
Nodelist nodes = (Nodelist) path.evaluate("/gridbag/row",doc,XPathContants.NODESET);//返回的是一組節點。
Node node = (Node) path.evaluate("/gridbag/row[1]",doc,XPathContants.NODE);//返回一個節點。
int count = ((Number) path.evaluate("count(/gridbag/row)",doc,XPathContants.NUMBER)).intValue();//返回節點個數。
若是想要從某個節點,或者節點列計算獲得一個節點能夠經過:
reusult = path.evaluate(expression,node);來獲取。
--------------------------------------下面是doc變量的建立過程。-------------
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File f = new File(); Document doc = builder.parse(f);