首页 > 解决方案 > 段落后的列表项内跨度的 XPath

问题描述

我有以下文档:

<html>
<head>
<title>Page</title>
</head>

<body>

<div>
    <div>
        <div>
        </div>
        <div class="this one">
            <p><span><strong>Ignore</strong></span></p>
                <p>Text</p>
            <p><span><strong>Header 1</strong></span></p>
                <ul><li><span style="color: #000;">List Value 1</span></li></ul>
            <p><span><strong>Header 2</strong></span></p>
                <ul><li><span style="color: #000;">List Value 2</span></li></ul>
            <p><span><strong>Ignore</strong></span></p>
                <ul><li><span style="color: #000;">List Value 3</span></li></ul>
            <p><span><strong>Header 3</strong></span></p>
                <ul>
                    <li><span style="color: #000;">List Value A</span></li>
                    <li><span style="color: #000;">List Value B</span></li>
                    <li><span style="color: #000;">List Value C</span></li>
                </ul>
            <p><span><strong>Ignore</strong></span></p>
                <p>Text</p>
        </div>
    </div>
</div>

</body>
</html>

我正在尝试获取下的所有列表值Header 3;但是,XPath 在之后找不到匹配项<p>

这有效:

//div[@class='this one']/p/span/strong[text() = 'Header 3']

这不会:

//div[@class='this one']/p/span/strong[text() = 'Header 3']/following-sibling::ul[1]/li/span

标签: htmlxpath

解决方案


问题是strong没有任何ul后续兄弟姐妹。

改变

//div[@class='this one']/p/span/strong[text() = 'Header 3']/following-sibling::ul[1]/li/span

//div[@class='this one']/p[span='Header 3']/following-sibling::ul[1]/li/span

因为p确实有ul以下兄弟姐妹。然后你会选择

<span style="color: #000;">List Value A</span>
<span style="color: #000;">List Value B</span>
<span style="color: #000;">List Value C</span>

按照要求。


推荐阅读