使用 XPath 捕获部分文本

Catching partial part of text with XPath

我在为以下 H

寻找 XPath 时遇到了一些困难
<div>
    <p> pppppppp 
        <span class="rollover-people">
            <a class="rollover-people-link">pppppp</a>
            <span class="rollover-people-block">
                <span class="rollover-block">
                    <span>
                        <img src="/someAddress" width="100" height="100" alt>
                        <a>xxxx</a>
                        <a>xxxxx</a>
                    </span>
                </span>
            </span>
        </span>pppppppp
    </p>ppppppppp
<div>

所以基本上我需要 <p><span class="rollover-people-block"> 内的所有内容。换句话说,我想要 <p> 而不是 <span class="rollover-people-block">。这可能吗?请记住,<p> 在页面中重复了不止一次。

这就是您正在寻找的闭包。

//p//text()[not(ancestor::span[@class='rollover-people-block'])]

这将获取 p 下的所有文本节点,不包括 span class='rollover-people-block'.

下的文本节点

样本html:

<!DOCTYPE html>
<html>
 <body>
 <div>
    <p> A 
        <span class="rollover-people">
            <a class="rollover-people-link">B</a>
            <span class="rollover-people-block">
                <span class="rollover-block">
                    <span>
                        <img src="/someAddress" width="100" height="100" alt>
                        <a>c</a>
                        <a>d</a>
                    </span>
                </span>
            </span>
        </span>E
    </p>f
 <p> G
        <span class="rollover-people">
            <a class="rollover-people-link">H</a>
            <span class="rollover-people-block">
                <span class="rollover-block">
                    <span>
                        <img src="/someAddress" width="100" height="100" alt>
                        <a>i</a>
                        <a>j</a>
                    </span>
                </span>
            </span>
        </span>K
    </p>l
<div>
 </body>
</html>

xpath 输出: