Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 需要XPath返回节点集(祖父母[没有叔叔]+父母[没有兄弟姐妹]+自己_Xml_Xpath - Fatal编程技术网

Xml 需要XPath返回节点集(祖父母[没有叔叔]+父母[没有兄弟姐妹]+自己

Xml 需要XPath返回节点集(祖父母[没有叔叔]+父母[没有兄弟姐妹]+自己,xml,xpath,Xml,Xpath,我正在寻找的示例。以下是输入: <AAA> <BBB id='1'> <CCC id='1'> <DDD id='1'/> <DDD id='2'/> </CCC> <CCC id='2'> <DDD id='3'/> <DDD id='4'/> </CCC> <

我正在寻找的示例。以下是输入:

<AAA>
  <BBB id='1'>
    <CCC  id='1'>
       <DDD  id='1'/>
       <DDD  id='2'/> 
    </CCC>
    <CCC id='2'>
       <DDD  id='3'/>
       <DDD  id='4'/> 
    </CCC>
  </BBB>
  <BBB id='2'>
    <CCC  id='3'>
       <DDD  id='5'/>
       <DDD  id='6'/> 
    </CCC>
    <CCC id='4'>
       <DDD  id='7'/>
       <DDD  id='8'/> 
    </CCC>
  </BBB>
</AAA>
下面是我要选择id为1的DDD的节点集,它是父节点和祖辈节点:

  <BBB id='1'>
    <CCC  id='1'>
       <DDD  id='1'/>
    </CCC>
  </BBB>

换句话说,从自我到祖父母的直线,并且只有那些节点。

假设起点是@id=1的DDD:

AAA\BBB[CCC\DDD\@id = '1']

返回包含DDD、其父级和祖级的节点集。

任何XPath表达式的结果都将是单个节点或节点列表;仅使用XPath无法获得树结构

但是,您可以选择所请求的节点:您将只获得它们的列表,而不是层次结构

下面是一个简单的XPath,可以实现这一点:

//DDD[@id = '1'] | //DDD[@id = '1']/.. | //DDD[@id = '1']/../..
请注意,使用//路径可能会影响性能。您可能希望将//扩展为/AAA/BBB/CCC/

如果您想解决这个问题,可以使用我的在线工具在任意XML上运行XPath表达式


祝你好运!

我现在认为我的问题没有意义。事实上,我正试图用一个XPath解决一个文档构建问题-XPath是不够的。感谢所有回答的人。

返回id=1的DDD的兄弟姐妹和叔叔。我不想要兄弟姐妹或叔叔。不过,谢谢。
//DDD[@id = '1'] | //DDD[@id = '1']/.. | //DDD[@id = '1']/../..