XPath 查询 select ONLY unique nodes
XPath query to select ONLY unique nodes
我有一个非常简单的 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 来 select 所有具有唯一 PersonID 的人。在上面的例子中,它应该给我 5 个 Person 项目中的 4 个。
我还需要 select Person 项下的所有节点。即 PersonID、Forename、Surname(如果存在)。
非常感谢任何帮助!
之前没有相同PersonID的Person标签的所有Person标签
//Person[not(PersonID = preceding::Person/PersonID)]
它给你节点 Person with children。在本例中有 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>'
或
//Person[not(PersonID = following::Person/PersonID)]
我有一个非常简单的 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 来 select 所有具有唯一 PersonID 的人。在上面的例子中,它应该给我 5 个 Person 项目中的 4 个。
我还需要 select Person 项下的所有节点。即 PersonID、Forename、Surname(如果存在)。
非常感谢任何帮助!
之前没有相同PersonID的Person标签的所有Person标签
//Person[not(PersonID = preceding::Person/PersonID)]
它给你节点 Person with children。在本例中有 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>'
或
//Person[not(PersonID = following::Person/PersonID)]