是否有XPath来查找特定模式下的节点?

时间:2017-02-26 18:32:11

标签: python regex xml xpath

我试图编写一个xpath来查找具有遵循特定模式的后代的xml节点。例如,如果我有以下xml:

<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>

我想得到三个中的前两个&#34;分配&#34;节点,基于它们具有子节点,该节点是&#34; String&#34;嵌套在0或更多的节点&#34; Parens&#34;标签。

是否有一个xpath可以实现这一点,类似于正则表达式如何&#34;(Parens /)* String&#34;将匹配&#34; String&#34;和&#34; Parens / Parens / String&#34;?

1 个答案:

答案 0 :(得分:0)

尝试以下XPath并告诉我结果

//Assign[//Parens[String] or String][position()<3]