春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          統(tǒng)計(jì)

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(lèi)(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          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文檔如下:

          <?xml version="1.0" encoding="GBK"?>
          <members> 
            
          <member name="Andy">
              
          <age>25</age>
              
          <title>JSE</title>
            
          </member>
            
          <member name="Bill">
              
          <age>35</age>
              
          <title>SSE</title>
            
          </member>
          </members>


          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)訪問(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 閱讀(2659) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Ajax

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 格尔木市| 于都县| 静宁县| 梓潼县| 海南省| 华宁县| 中江县| 绥芬河市| 皮山县| 九台市| 合江县| 华宁县| 新绛县| 浦东新区| 聊城市| 小金县| 台山市| 京山县| 汤阴县| 瑞安市| 蒲江县| 裕民县| 营山县| 洪湖市| 进贤县| 锡林浩特市| 饶河县| 太湖县| 镇坪县| 宣恩县| 新绛县| 许昌市| 泊头市| 广元市| 长春市| 永泰县| 潮州市| 潞西市| 伊宁县| 唐海县| 漠河县|