春風(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)訪(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

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 资阳市| 昌江| 会同县| 卢龙县| 马龙县| 成安县| 得荣县| 永康市| 龙江县| 扎鲁特旗| 清镇市| 平舆县| 弥渡县| 拜城县| 沁阳市| 错那县| 克拉玛依市| 绥中县| 兴业县| 板桥市| 安图县| 临朐县| 中宁县| 长宁区| 扶风县| 江门市| 增城市| 台南县| 江城| 黄平县| 弥渡县| 宁波市| 义乌市| 天峻县| 临湘市| 东乌珠穆沁旗| 普兰县| 盐山县| 阳春市| 华池县| 晋中市|