如何使用XQuery检索父节点?

son*_*ony 25 xml xpath xquery parent-child

我正在使用XML和XQuerie.我通常使用相对于父节点的XPath表达式来检索其子节点.但是,如果我有一个子节点,我不知道如何做相反的意思,我如何检索其父节点.

<node id="50>
  <childnode1 childid="51" />
  <childnode2 childid="52" />
</node>
Run Code Online (Sandbox Code Playgroud)

如果我有节点<childnode1 childid="51" />,我该如何检索其父节点:<node id="50>

Dim*_*hev 22

简短回答:

..
Run Code Online (Sandbox Code Playgroud)

这将选择当前(上下文)节点的父节点.

更长,更一般的答案:

//node()[childnode1/@childid="51"]
Run Code Online (Sandbox Code Playgroud)

这将选择文档中具有名为的子元素的任何节点,该元素childnode1具有属性childid,其值为"51".

应该尽量避免使用包含//缩写的表达式,因为这可能效率非常低.仅在事先不知道XML文档的结构时才使用'//'.

最佳答案:

ExpressionSelectingTheChildNode/..
Run Code Online (Sandbox Code Playgroud)


Nat*_*hes 5

..用来获取父对象,如下所示:

../childnode1
Run Code Online (Sandbox Code Playgroud)

因此,如果您有一些这样的XML文档:

<a id="1">
  <b id="2">
    <c id="3">
      <d id="4"/>
    </c>
    <c id="5"/>
    <c id="6">
      <d id="7"/>
    </c>
  </b>
</a>
Run Code Online (Sandbox Code Playgroud)

然后是XQuery

//../d[@id = "4"]
Run Code Online (Sandbox Code Playgroud)

将返回c与节点id3