0

我有一个希望构建的非常简单的 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 的 Person 是重复的。我是 XmlDocument 对象中的 xml,我想在 SelectNodes 方法中使用 XPath 来选择所有具有唯一 PersonID 的人员。在上述情况下,它应该给我 5 个人项目中的 4 个。

我还需要选择 Person 项下的所有节点。即 PersonID、Forename、Surname(如果存在)。

非常感谢任何帮助!

4

2 回答 2

3

之前没有具有相同 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>'
于 2015-06-21T12:48:33.937 回答
1

或者

//Person[not(PersonID = following::Person/PersonID)]
于 2015-06-21T16:08:19.647 回答