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']/../..