【问题标题】:XPath: select all A nodes and all B nodes that are not inside an A nodeXPath:选择所有A节点和不在A节点内的所有B节点
【发布时间】:2009-03-28 22:48:41
【问题描述】:

在一个 XPath 表达式中是否可能出现以下情况(请参见下面的示例):

选择所有(msg类的span标签)和所有((具有非空alt属性的img标签)(不在里面msg 类的 span 标签))

简化示例:

<span class="msg">Message text A</span>
<img alt="" />
<span class="msg">Message text B <img alt="text A" /></span>
<span class="err">Error text C <img alt="text B" /></span>
<img alt="text C" />
<span class="err">Error text D</span>

生成的节点集应包含:

<span class="msg">Message text A</span>
<span class="msg">Message text B <img alt="text A" /></span>
<img alt="text B" />    
<img alt="text C" />

【问题讨论】:

    标签: c# vb.net xpath


    【解决方案1】:

    未测试,但类似?

    //span[@class='msg'] | //img[@alt!='' and not(ancestor::span[@class='msg'])]
    

    【讨论】:

    • 谢谢,完美!我删除了第一个“not(ancestor::...”,因为材料不能在 msg span 中包含 msg span。它通过相同的数据保存了两次迭代,从而加快了速度。
    • 好的 - 我记错了一些括号;-p
    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多