2015-06-21 93 views
0

我有什麼是希望有一個非常簡單的XPath查詢構建,我堅持(對XPath很新穎)。我有以下xml:XPath查詢來選擇唯一的唯一節點

<?xml version="1.0" encoding="utf-8"?> 
    <Persons> 
     <Person> 
     <PersonID>6352</PersonID> 
     <Forename>Tristan</Forename> 
     </Person> 
     <Person> 
     <PersonID>6353</PersonID> 
     <Forename>Ruth</Forename> 
     </Person> 
     <Person> 
     <PersonID>6913</PersonID> 
     <Forename>Mina</Forename> 
     <Surname>Asif</Surname> 
     </Person> 
     <Person> 
     <PersonID>6913</PersonID> 
     <Forename>Mina</Forename> 
     <Surname>Asif</Surname> 
     </Person> 
     <Person> 
     <PersonID>6914</PersonID> 
     <Forename>Clark</Forename> 
     <Surname>Williams</Surname> 
     </Person> 
    </Persons> 

您可以看到ID 6913的人是重複的。我在XmlDocument對象中的xml,我想在SelectNodes方法中使用XPath來選擇所有擁有唯一PersonID的人員。在上面的情況下,它應該給我5個人物品中的4個。

我還需要選擇Person項下的所有節點。這是PersonID,Forename,姓氏(如果存在)。

任何幫助非常感謝!

回答

3

有沒有使用相同的是PersonID私人標籤的所有個人標記之前

//Person[not(PersonID = preceding::Person/PersonID)] 

它給你的孩子節點的人。在這種情況下,4個元素:

Element='<Person> 
    <PersonID>6352</PersonID> 
    <Forename>Tristan</Forename> 
</Person>' 
Element='<Person> 
    <PersonID>6353</PersonID> 
    <Forename>Ruth</Forename> 
</Person>' 
Element='<Person> 
    <PersonID>6913</PersonID> 
    <Forename>Mina</Forename> 
    <Surname>Asif</Surname> 
</Person>' 
Element='<Person> 
    <PersonID>6914</PersonID> 
    <Forename>Clark</Forename> 
    <Surname>Williams</Surname> 
</Person>' 
+0

這樣的作品,謝謝! :-) –

1

//Person[not(PersonID = following::Person/PersonID)] 
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

如何?你嘗試過或沒有嘗試過。 – Kachna

+0

這也適用,謝謝! –