我希望有一个非常简单的XPath查询来构建我坚持(对XPath来说很新)。我有以下xml:
<?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,Surname(如果存在)。
任何帮助非常感谢!
答案 0 :(得分:3)
在
之前没有Person标签且具有相同PersonID的所有Person标签//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>'
答案 1 :(得分:1)
或
//Person[not(PersonID = following::Person/PersonID)]