XPath: Как выбрать первого данного родителя узла? - PullRequest
2 голосов
/ 27 августа 2009

Мой XML:

<root>
  <child>
     <childOfChild>
        <anotherLostChild>
           <currentSelectedNode>
              SOME TEXT
           </currentSelectedNode>
        </anotherLostChild>
     </childOfChild>
  </child>
</root>

Я выбрал узел currentSelectedNode , используя:

xpath.SelectSingleNode("//currentSelectedNode")

Но как мне вернуться, чтобы выбрать первый chilfOfChild родительский узел (учитывая, что контекст currentSelectedNode ?

xpath.SelectSingleNode("//currentSelectedNode")...???

Ответы [ 4 ]

13 голосов
/ 27 августа 2009

Ваш вопрос действительно запутанно написан, но звучит так, как будто вы хотите ось предка , что-то вроде:

//currentSelectedNode/ancestor::childOfChild[1]

(чистый раствор xpath)

3 голосов
/ 27 августа 2009
xpath.SelectSingleNode("//currentSelectedNode/../..")

это выберет родителя родителя

0 голосов
/ 18 марта 2016

Используя XElement xElem, вы можете использовать xElem.Parent, чтобы получить непосредственного родителя.

https://msdn.microsoft.com/en-us/library/system.xml.linq.xobject.parent(v=vs.110).aspx

Чтобы выбрать конкретные узлы-предки, вы можете использовать

xElem.Ancestors("currentSelectedNode"); 

чтобы получить всех предков с этим конкретным именем узла.

https://msdn.microsoft.com/en-us/library/bb348268(v=vs.110).aspx

0 голосов
/ 28 августа 2009

В Linq-To-XML вам нужно будет использовать только метод Ancestor:

Чтобы получить непосредственного предка:

xElement.Ancestor();

Чтобы указать, какой предок:

xElement.Ancestor("NameOfTheAncestorNode");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...