xpath 前同级选择

Posted

技术标签:

【中文标题】xpath 前同级选择【英文标题】:xpath preceding-sibling select 【发布时间】:2017-04-03 14:39:10 【问题描述】:

有人可以给我一个提示,如何根据 svg class="svg svg-goal" 获取“Some text1”吗?

这行得通

$x("//br/../preceding-sibling::strong/a")

这不起作用

$x("//svg[@class='svg svg-goal']/../preceding-sibling::span/strong/a")

层级 html 代码

<span class="event-p-name">
    <strong>
        <a href="">Some text1</a>
    </strong>
    <small>
        <br>Some text2</br>
    </small>
</span>
<span class="event-type">
    <svg class="svg svg-goal">
        <use xlink:href="/public/themes/svg/symbol-defs.svg#football"></use>
    </svg>
</span>

谢谢

【问题讨论】:

【参考方案1】:

对于&lt;svg&gt; 元素(及其子元素),您需要使用//*[name()='svg'] 语法。试试下面:

//*[name()='svg' and @class='svg svg-goal']/../preceding-sibling::span/strong/

【讨论】:

【参考方案2】:

试试这个

//svg[@class='svg svg-goal']/preceding::span/strong/a

结果

<a href="">Some text1</a>

【讨论】:

以上是关于xpath 前同级选择的主要内容,如果未能解决你的问题,请参考以下文章

xpath路径定位

如果通过当前元素知道父元素同级元素

如果通过当前元素知道父元素同级元素

如果通过当前元素知道父元素同级元素

xpath语法

xpath语法