在处理Xpath表达式时,我坚持一种情况,在这种情况下,我必须找出依赖于其他节点的一个元素的节点。如何使用XPath从XML中检索递归元素
下面是使用的XML示例:
<?xml version="1.0" encoding="UTF-8" ?>
<parent1>
<child1 id="1">
<in>Starting1</in>
<out>connect1</out>
</child1>
<child1 id="2">
<in>connect1</in>
<out>connect1.1</out>
</child1>
<child1 id="3">
<in>Starting2</in>
<out>connect2</out>
</child1>
<child1 id="4">
<in>connect1.1</in>
<out>connect1.2</out>
</child1>
<child1 id="5">
<in>connect1.2</in>
<out>end1</out>
</child1>
<child1 id="6">
<in>connect2</in>
<out>connect2.1</out>
</child1>
<child1 id="7">
<in>connect2.1</in>
<out>connect2.2</out>
</child1>
<child1 id="8">
<in>connect2.2</in>
<out>open2</out>
</child1>
</parent1>
希望的输出是找出节点,其具有开始点作为“启动”,然后行进到另一个节点(装置出来的节点是在对于其他节点)&不以“结束”结尾。
开始和结束之间可能有x个连接。
我已经使用了下面的xpath表达式。但是这仅限于2级递归。
//parent1/child1[in=(//parent1/child1[in=(//parent1/child1[in=(//parent1/child1[contains(in,"Starting")]/out)]/out)]/out) and not(contains(out,"end"))]
输出:
<child1 id="8">
<in>connect2.2</in>
<out>open2</out>
</child1>
至于,我不知道如何连接器的数量很多可能是在节点之间。那么,XML1.0中有没有办法找到递归?
有一个duplicate question already in stackoverflow.但是,我没有从那里得到解决方案。
你的问题很难理解。输入中没有“开始”点,只有“开始1”和“开始2”。并且可能有多个节点符合标准。请用更清晰的语言说明您的要求。 –
包含(in,“开始”)标记表示,标记文本包含“开始”字符串。你可以检查xpath表达式 –