2008-08-27 51 views
16

如何使用XPath根據其內容選擇XML節點?如何根據其內容選擇XML節點?

如果我例如有下面的XML,我想選擇<筆者> -node包含裏奇獲得作者的全名:

<books> 
    <book isbn='0131103628'> 
     <title>The C Programming Language</title> 
     <authors> 
      <author>Ritchie, Dennis M.</author> 
      <author>Kernighan, Brian W.</author> 
     </authors> 
    </book> 
    <book isbn='1590593898'> 
     <title>Joel on Software</title> 
     <authors> 
      <author>Spolsky, Joel</author> 
     </authors> 
    </book> 
</books> 

回答

23
/books/book/authors/author[contains(., 'Ritchie')] 

//author[contains(., 'Ritchie')] 
+5

對於像我這樣的XPath新手來說,注意'.`是`text()`的一個更短的別名可能是有價值的 - 所以是的,這個答案是正確的。 – Oliver 2013-02-05 09:20:37

4

這樣做的XPath是:

/books/book/authors/author[contains(., 'Ritchie')] 

在C#下面的代碼將返回 「裏奇,丹尼斯M.」:

xmlDoc.SelectSingleNode("/books/book/authors/author[contains(., 'Ritchie')]").InnerText; 
+0

+1。詳細解釋對初學者有幫助。 – Nithesh 2013-07-11 04:34:25

4
//author[contains(text(), 'Ritchie')]