2012-06-17 165 views
4

我有下面的XML文件:Xpath的 - 根據多個條件選擇

<persons> 
    <person name="shawn"> 
     <age>34</age> 
     <hair style="spikes">red</hair> 
    </person> 
    <person name="mike"> 
     <age>36</age> 
     <hair style="bald">red</hair> 
    </person> 
    <person name="shawn"> 
     <age>38</age> 
     <hair style="bald">red</hair> 
    </person> 
</persons> 

在C#中使用XPath,是可以選擇人的要素,其中名爲「肖恩」和髮型= 「禿」?

我試着使用:

XElement.XPathSelectElement("//person[@name='shawn'] | //person/hair[@style='bald'] 

,但也練就了我的頭髮元素的引用,而不是人的要素。

感謝提前:)

彼得

回答

9

如果你希望有人誰是既叫肖恩和禿(這你的問題標題所暗示的),你想:

//person[@name='shawn' and hair/@style='bald'] 

如果您想要被稱爲肖恩或禿頭的人(你看起來像你可能從你的問題中嘗試做的那樣),你想要:

//person[@name='shawn' or hair/@style='bald'] 
+0

謝謝,你的第一個聲明做到了。我的錯誤是在和之前關閉方括號。我嘗試了幾種組合,但從未考慮到搜索字符串必須位於同一組方括號內。 – SchmitzIT

+4

他們沒有。表達式'// person [@ name ='shawn'] [hair/@ style ='bald']'同樣適用。無論你的錯誤是什麼,都不是這樣。 –