XPath получить родительский элемент - PullRequest
2 голосов
/ 08 апреля 2011

У меня есть вопрос, связанный с XPath.У меня есть список записей XML, таких как:

<NavigationEntry>
<BaseData>
    <Name>Entry Name</Name>
  </BaseData>
  <Relation>
    <RelationEntry isDefault="0">
      <ParentNavigationEntry>456</ParentNavigationEntry>
      <Order>200</Order>
    </RelationEntry>
  </Relation>

<NavigationEntry>
  <BaseData>
    <Name>Entry Name</Name>
  </BaseData>
  <Relation>
    <RelationEntry isDefault="0">
      <ParentNavigationEntry>123</ParentNavigationEntry>
      <Order>200</Order>
    </RelationEntry>
  </Relation>

Вопрос: как мне получить все записи навигации, которые имеют поле ParentNavigationEntry со значением 456.

Я пытался //NavigationEntry//RelationEntry[ParentNavigationEntry="456"]

Но это дает мне только поле RelationEntry, но мне нужно поле NavigationEntry.

Можно ли решить это одним запросом XPath?

Ответы [ 2 ]

6 голосов
/ 08 апреля 2011

Вопрос заключается в следующем: как получить все записи навигации, имеющие поле ParentNavigationEntry со значением 456.

//NavigationEntry[
   /Relation
      /RelationEntry
         /ParentNavigationEntry = 456
]

Примечание: Выберите эти NavigationEntry элементов и затем предикат фильтра.Кроме того, когда схема хорошо известна, не рекомендуется использовать //, поскольку она пересекает все дерево-потомки даже после совпадения.

0 голосов
/ 08 апреля 2011

Добавить / ParentNavigationEntry к вашему XPath.

Пример ...

//NavigationEntry//RelationEntry[ParentNavigationEntry="456"]//ParentNavigationEntry
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...