xml - 计算xpath中子项的特殊文本

标签 xml xpath xpath-2.0

我有这个 xml 文档:

    <AAA> 
      <CCC> 
           <BBB>SALAM</BBB>
           <BBB>HALET KHUBE</BBB> 
           <BBB>HEY</BBB> 
           <TTT>SALAM</TTT>
           <GGG/>
           <ZZZ/>
      </CCC> 
      <DDD> 
           <BBB>GOOD</BBB> 
           <BBB>BOOO</BBB> 
           <GGG/>
           <GGG/>
           <ZZZ/>
      </DDD> 
      <EEE> 
           <CCC>TAKE</CCC> 
           <DDD>LEAVE</DDD>
           <ZZZ/>
           <ZZZ/>
           <ZZZ/> 
      </EEE> 
 </AAA>

我想选择有 2 个子节点,文本 =“SALAM”(该节点可以有任意数量的子节点,但它必须有 2 个子节点,文本 =“SALAM”)。例如,在上面的 xml 中,xpath 查询必须返回 CCC 标签。 请帮我。 谢谢

最佳答案

使用:

/*/*[count(*[text() = 'SALAM']) = 2 ]

使用以下内容可能会更有效:

/*/*
  [*[text() = 'SALAM'][2]
 and
   not([*[text() = 'SALAM'][3])
  ]

尽可能避免使用 // 伪运算符,因为在许多情况下它可能会非常慢。

关于xml - 计算xpath中子项的特殊文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771670/

相关文章:

java - 如何使用 DOM 解析器解析忽略 DOCTYPE 声明的 xhtml

javascript - 如何更改由 JavaScript 函数生成的 docx 中的字体

xpath - 使用 lxml 和 requests 从 XPath 返回 utf-8

java - XMLUnit 是否具有带有命名空间的 XPath 输出?

python - 在 python 中评估 Xpath2.0

python - 使用 lxml 中的 Element 用换行符打印每个属性

xml - vb.net-从XSD创建类并生成xml

php - 遍历 xpath 中的子 li 节点

xpath - 如何使用xpath获取嵌套最深的元素节点? (使用 XMLTWIG 实现)