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)]