是否有XPath查找特定模式下的节点?
我想写一个xpath来查找具有特定模式的后代的xml节点。举例来说,如果我有以下XML:是否有XPath查找特定模式下的节点?
<While>
<Condition>
<ID val="shouldLoop"/>
</Condition>
<Assign>
<ID val="StringVariable1"/>
<Parens>
<Parens>
<String val="StringLiteral"/>
</Parens>
</Parens>
</Assign>
<Assign>
<ID val="StringVariable2"/>
<String val="StringFigurative"/>
</Assign>
<Assign>
<ID val="StringVariable3"/>
<Add>
<String val="StringLiteral"/>
<String val="StringFigurative"/>
</Add>
</Assign>
</While>
我想获得前两三个“分配”的节点,基于它们具有的嵌套在0或“字符串”节点的子节点更多“Parens”标签。
是否有一个xpath可以完成类似于“(Parens /)* String”类似于“String”和“Parens/Parens/String”的正则表达式?
尝试以下XPath
,让我知道结果
//Assign[//Parens[String] or String][position()<3]
此xpath似乎与所有带String或Parens/String节点的Assigns匹配,作为后代并返回前两个。如果示例XML中的Assign节点的排列顺序不同,我希望它仍然可以使用StringVariable1和StringVariable2返回赋值,但不会返回StringVariable3。 我正在寻找一个xpath,它将返回没有任何分配或只有他们和他们的字符串后代节点之间的Parens。 StringVariable3的Add节点打破了该模式,所以它应该被排除,但其余的应该匹配。 – user2917486
可能有类似于'
没错。
'//分配[字符串|的括号//字符串]'会发现'Assign'以'String'儿童或有'Parens'孩子与任何'字符串'后裔。 ' ...'也会匹配,所以它不准确。 –
tdelaney