XPath示例
DOM與XPath
我們可以使用DOM來(lái)解析來(lái)自服務(wù)器端的XML反饋,但返回結(jié)果比較復(fù)雜時(shí)我們必須在XML文檔中一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)的向下鉆探,而使用XPath(專(zhuān)門(mén)用于定位匹配模式的一個(gè)或多個(gè)節(jié)點(diǎn)的小語(yǔ)言)只要一行代碼就能遍歷多個(gè)節(jié)點(diǎn)。與使用DOM相比,使用XSLT和XPath編碼所投入的精力要小得多,隨著應(yīng)用規(guī)模的增長(zhǎng),后者的優(yōu)勢(shì)會(huì)越來(lái)越顯著。
XPath簡(jiǎn)介
每個(gè)XPath表達(dá)式都有兩部分:一個(gè)上下文節(jié)點(diǎn)和一個(gè)節(jié)點(diǎn)模式。上下文節(jié)點(diǎn)提供了節(jié)點(diǎn)模式起始的位置。節(jié)點(diǎn)模式是由一個(gè)或者多個(gè)節(jié)點(diǎn)組成的字符串。舉例來(lái)說(shuō),有一XML文檔如下:











XPath表達(dá)式如下:member/age.
如果上下文節(jié)點(diǎn)是<members>,則前面的XPath表達(dá)式就匹配了<age>25</age>, <age>35</age>。在這個(gè)表達(dá)式中,member和age都表示了XML元素的標(biāo)簽名,按照它們?cè)谏舷挛墓?jié)點(diǎn)中出現(xiàn)的順序;斜杠表示從父節(jié)點(diǎn)到子節(jié)點(diǎn)的關(guān)系。這個(gè)XPath表達(dá)式表示:從<members>起,匹配位于member節(jié)點(diǎn)下的子節(jié)點(diǎn)age元素。
要選擇第一個(gè)age節(jié)點(diǎn),表達(dá)式要變成members/member[position()=1]/age,這里使用了XPath的position函數(shù),它用于返回元素在父節(jié)點(diǎn)下的位置,每一個(gè)子節(jié)點(diǎn)的位置為一。
XPath中還可以匹配屬性,如果要選擇name=bill的member元素,XPath表達(dá)式為members/member[@name=‘Bill’]。其中@是attribute的簡(jiǎn)寫(xiě)。
IE對(duì)XPath的支持
XPath是一種十分強(qiáng)大的表達(dá)式可以令在DOM中查找指定節(jié)點(diǎn)變得很容易,因此IE和Mozilla都在DOM實(shí)現(xiàn)中引入了XPath支持。
在IE 中,通過(guò)提供selectNodes()與selectSingleNode()這樣兩個(gè)函數(shù),我們就可以以類(lèi)似文件路徑的方式,來(lái)訪(fǎng)問(wèn)任意深度的XML數(shù)據(jù). selectNodes()用于返回匹配某個(gè)模式的節(jié)點(diǎn)的集合; selectSingleNode()用于返回匹配給定模式的第一個(gè)節(jié)點(diǎn)。它們的具體使用請(qǐng)見(jiàn)例子:XPathSample。
XPath例程下載:
http://www.aygfsteel.com/Files/sitinspring/XPathSample20081113124739.rar
posted on 2008-11-13 12:52 sitinspring 閱讀(2644) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Ajax