2017-01-23 74 views
2

我有一個這樣的XML部分之前沒有PCDATA:的XPath選擇第一節點當在節點

  1. <p><bold>Some Text</bold> some more content and text...</p>

  • <p>Some Text and something <bold>bold</bold> within and more content...</p>
  • 我在尋找一個XPath expre只有在<p>(如第一個示例)中的第一個內容時纔會返回元素<bold>,並且在標記之前出現PCDATA時不返回任何內容。

    我可以使用p/bold[1],但返回這兩個選項的結果。

    我很感激任何建議!

    回答

    0

    你可以使用

    //p/bold[1][not(preceding-sibling::node())] 
    

    對於所有p元素,找到第一個bold元素,只有當它不具有前同輩 - 即不PCDATA纔出現。

    你也可以檢查p元素的第一個子節點,並檢查它是否是一個bold元素,這有可能更快地執行,如果有很多孩子:

    //p/node()[1][name() = 'bold'] 
    
    1

    您可以使用p/node()[1][self::bold]選擇第一個子節點,如果它是bold元素。

    相關問題