用于选择自身,前后节点的XPath表达式

时间:2011-08-11 14:38:12

标签: xpath

我想根据TARGET的内容在文档中选择以下HTML。即如果TARGET匹配,请选择所有内容。但是,我不知道该去哪里:id('page')/x:div/span/a='TARGET' - 如何使用父,子和兄弟表达式来获取包含diva之前的div br },以及div

后面的两个<a></a> <div> <br /> <span> <a>TARGET</a> <a></a> <span> <span> <a></a> </span> <a></a> <span></span> </span> <span> <a></a> </span> </span> </div> <br /> <br /> 标记
{{1}}

2 个答案:

答案 0 :(得分:3)

使用单个XPath:

"//*[
     (self::a and following-sibling::*[1][self::div and span/a='TRAGET']) or
     (self::div and span/a='TARGET') or
     (self::br and preceding-sibling::*[1][self::div and span/a='TARGET']) or
     (self::br and preceding-sibling::*[2][self::div and span/a='TARGET'])
    ]"

请注意,由于未公开的 br 标记,您的文档格式不正确。此外,我没有包含任何名称空间,必要时可以添加。

答案 1 :(得分:1)

可能你应该先找到所有的div(不确定应该满足的条件):

//div[span[a[text()="TARGET"]]][preceding-sibling::*[1][name()="a"]][following-sibling::*[1][name()="br"]]

之后 - 每个div的所有相关元素:

   ./preceding-sibling::a[1]
   ./following-sibling::br[1]
   ./following-sibling::br[2]