我是 XPATH 的新手,我想知道是否有使用 XPATH 查询的好方法。
我想将 XML 树中的连续兄弟节点与某些预定义的规则进行匹配,例如,如果三个兄弟节点一个接一个地出现并且它们具有属性 value="A"、value="B" 和 value="C ",我希望 XPATH 查询匹配这样一个序列中的第一个节点/最后一个节点,并且我想从 XML 树中提取所有这样的连续节点序列,以便稍后处理它们。
谢谢!
我是 XPATH 的新手,我想知道是否有使用 XPATH 查询的好方法。
我想将 XML 树中的连续兄弟节点与某些预定义的规则进行匹配,例如,如果三个兄弟节点一个接一个地出现并且它们具有属性 value="A"、value="B" 和 value="C ",我希望 XPATH 查询匹配这样一个序列中的第一个节点/最后一个节点,并且我想从 XML 树中提取所有这样的连续节点序列,以便稍后处理它们。
谢谢!
这是一种可能的解决方案:
第一的:
我想将 XML 树中的连续兄弟节点与某些预定义规则匹配,例如,如果三个兄弟节点一个接一个地出现并且它们具有属性 value="A"、value="B" 和 value="C ",
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
然后:
我想从 XML 树中提取所有这些连续的节点序列......
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
|
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
/following-sibling::*[position() = 1 or position()=2]
以下是真正的 XPathVisualizer 中的选择外观(_http://www.topxml.com/xpathvisualizer/ - 此链接有木马 - 只有在您有良好的恶意软件防护时才单击。或者,请联系我获取该应用程序。 ):
最后:
我希望 XPATH 查询以这样的顺序匹配第一个节点/最后一个节点
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
|
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
/following-sibling::*[position()=2]
注意:这并不能回答问题。我在写这篇文章时误解了它。
要查询它们,position()=1 or position()=last()
请用作谓词,可能与用于选择节点的其他谓词一起使用。
这是XpathVisualizer中的样子:
“提取它们”不是 xpath 的问题。为此,您可以枚举选定的元素,然后做任何您喜欢的事情,这取决于您。