簡單的XPath入門

來源:互聯網
上載者:User

標籤:style   http   ar   io   color   os   使用   sp   on   

XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言 (SGML)的子集)文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在資料結構樹中找尋節點的能力。XPath 是 XML 的查詢語言,和 SQL 的角色很類似。以下面 XML 為例,介紹 XPath 的文法。

<?xml version="1.0" encoding="ISO-8859-1"?>

<catalog>

    <cd country="USA">

        <title>Empire Burlesque</title>

        <artist>Bob Dylan</artist>

        <price>10.90</price>

    </cd>

    <cd country="UK__time">

        <title>Hide your heart</title>

        <artist>Bonnie Tyler</artist>

        <price>9.90</price>

    </cd>

    <cd country="UK">

        <title>Hide your heart</title>

        <artist>Bonnie Tyler</artist>

        <price>9.90</price>

    </cd>

    <cd country="USA">

        <title>Greatest Hits</title>

        <artist>Dolly Parton</artist>

        <price>9.90</price>

    </cd></catalog>

</catalog>

定位節點

XML 是樹狀結構,類似檔案系統內資料夾的結構,XPath 也類似檔案系統的路徑命名方式。不過 XPath 是一種模式(Pattern),可以選出 XML 檔案中,路徑符合某個模式的所有節點出來。

1)要選 catalog 底下的 cd 中所有 price 元素可以用:

    /catalog/cd/price

如果 XPath 的開頭是一個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)表示檔案中所有符合模式的元素都會被選出來,即使是處於樹中不同的層級也會被選出來。

2)選出檔案中所有叫做 cd 的元素(在樹中的任何層級都會被選出來):

    //cd

使用星號(Wildcards,*)可以選擇未知的元素。

3)選出/catalog/cd 的所有子項目:

    /catalog/cd/*

4)選出所有 catalog 的子項目中,包含有 price 作為子項目的元素。

    /catalog/*/price

5)選出有兩層父節點,叫做 price 的所有元素。

    /*/*/price

6)選擇出檔案中的所有元素。

    //*

要注意的是,想要存取不分層級的元素,XPath 文法必須以兩個斜線開頭(//),想要存取未知元素才用星號(*),星號只能代表未知名稱的元素,不能代表未知層級的元素。

選擇分支

使用中括弧可以選擇分支。

1)從 catalog 的子項目中取出第一個叫做 cd 的元素。XPath 的定義中沒有第0元素

    /catalog/cd[1]

2)選擇 catalog 中的最後一個 cd 元素: XPath 沒有定義 first() 這種函式,用上例的 [1]就可以取出第一個元素。

    /catalog/cd[last()]

3)選出含有 price 子項目的所有/catalog/cd 元素。

    /catalog/cd[price]

4)選出 price 元素的值等於10.90的所有/catalog/cd 元素

    /catalog/cd[price=10.90]

5)選出 price 元素的值等於10.90的所有/catalog/cd 元素 的 price 元素

    /catalog/cd[price=10.90]/price

選擇一個以上的路徑

使用 Or 運算元(|)就可以選擇一個以上的路徑

1)選擇所有 title 以及 artist 元素

    //title | //artist

2)選擇所有 title 以及 artist 以及 price 元素

    //title | //artist | //price

選擇屬性 

在XPath的屬性。除了選擇元素以外,也可以選擇屬性,屬性都是以@開頭。

1)選擇檔案中所有叫做 country的屬性。

    //@conutry

2)選擇所有含有country 這個屬性的 cd元素。

    //cd[@country]

3) 選擇出country屬性值為UK的cd元素

    //country[@country==‘UK‘]

部分匹配

有些屬性的值具有一定的規律,例如上面的UK就是首碼,一部分是不變的。也可以用start-with

1)定位屬性值首碼為UK_的元素

    //cd[containers(@country,‘UK_‘)]  

     //cd[start-with(@country,‘UK_‘)]  

這是在某個文檔裡面學習來的,感覺簡單又易上手,故摘錄於此。

簡單的XPath入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.