html
  • xml
  • xpath
  • 2015-08-31 93 views 2 likes 
    2

    設想一個HTML片段如下:如何在XPATH中選擇具有相同屬性ID的第二個元素?

    <div> 
        <div class="content">test1</div> 
    </div> 
    <div> 
        <div class="content">test2</div> 
    </div> 
    <div> 
        <div class="content">test3</div> 
    </div> 
    

    ,我使用XPath是//div[@class='content']

    現在,我想指的是第二個div元素。我應該添加到我的xpath? TIA。

    +0

    //格文檔的匹配[2] – splash58

    回答

    6

    到目前爲止,已經提出了兩種解決方案,但他們都沒有從您在問題中顯示的HTML代碼段中選擇任何內容。當簡單的包裝它在一個根元素:

    <root> 
    <div> 
        <div class="content">test1</div> 
    </div> 
    <div> 
        <div class="content">test2</div> 
    </div> 
    <div> 
        <div class="content">test3</div> 
    </div> 
    </root> 
    

    兩個//div[@class='content'][2],並從該文件//div[2][@class='content']選擇什麼。他們都假設第二個謂詞(在[]之間)應用於中間結果序列,但第二個謂詞也應用於初始文檔樹的節點。要選擇的 「中間」 的結果的子集,使用括號圍繞第一部分:

    (//div[@class='content'])[2] 
    

    和單個結果將是

    <div class="content">test2</div> 
    

    更多細節

    //div[@class='content'][2]表示:

    從文檔中的任意位置選擇名爲div的所有元素,但只有那些具有值爲「content」的class屬性的元素。在那些選定的節點中,只保留父節點的第二個div[@class = 'content']元素。

    所以,這個表達式將只能選擇從以下文檔的結果:

    <root> 
    <div> 
        <div class="content">test1</div> 
    </div> 
    <div> 
        <div class="content">test2</div> 
        <div class="other">other</div> 
        <div class="content">MATCH</div> 
    </div> 
    <div> 
        <div class="content">test3</div> 
    </div> 
    </root> 
    

    //div[2][@class='content']表示:

    選擇從文檔中任何地方叫div的所有元素,但只有那些是他們父母的第二個孩子。在那些選定的節點中,只保留那些具有值爲「content」的class屬性的節點。

    只有生產[@類= '內容']給定像

    <root> 
    <div> 
        <div class="content">test1</div> 
    </div> 
    <div> 
        <div class="other">other</div> 
        <div class="content">MATCH</div> 
    </div> 
    <div> 
        <div class="content">test3</div> 
    </div> 
    </root> 
    
    相關問題