html - 使用 xpath 获取下一个元素

标签 html xml xpath

我有以下 html block ,在这种情况下,我试图获取阿拉巴马州下的所有城市链接。这是我构建的xpath

//h3/a[contains(text(),'Alabama')]/following::ul/li/a

但是上面的xpath匹配的东西太多了。知道我做错了什么吗?

<div class="geoUnit">

                <h3><a href="http://example.com/" style="background-color: rgba(0, 0, 0, 0);">Alabama</a></h3>
                  <ul style="background-color: rgba(0, 0, 0, 0);">
                    <li style="background-color: rgba(0, 0, 0, 0);"><a href="http://example.com/" style="background-color: rgba(0, 0, 0, 0);">Auburn</a></li>
                    <li><a href="http://example.com/">Birmingham</a></li>
                    <li><a href="http://example.com/">Dothan</a></li>
                    <li><a href="http://example.com/">Gadsden</a></li>
                    <li><a href="http://example.com/">Huntsville</a></li>
                    <li><a href="http://example.com/">Mobile</a></li>
                    <li><a href="http://example.com/">Montgomery</a></li>
                    <li><a href="http://example.com/">Muscle Shoals</a></li>
                    <li><a href="http://example.com/">Tuscaloosa</a></li>
                 </ul>
</div>

在这种情况下,我希望将以下内容选为数组。我想提取每个城市链接。我在 Java 中使用 xpath

                    <li style="background-color: rgba(0, 0, 0, 0);"><a href="http://example.com/" style="background-color: rgba(0, 0, 0, 

0);">Auburn</a></li>
                        <li><a href="http://example.com/">Birmingham</a></li>
                        <li><a href="http://example.com/">Dothan</a></li>
                        <li><a href="http://example.com/">Gadsden</a></li>
                        <li><a href="http://example.com/">Huntsville</a></li>
                        <li><a href="http://example.com/">Mobile</a></li>
                        <li><a href="http://example.com/">Montgomery</a></li>
                        <li><a href="http://example.com/">Muscle Shoals</a></li>
                        <li><a href="http://example.com/">Tuscaloosa</a></li>

最佳答案

I'm trying to get all the city links under Alabama in this case.

您的 XPath 会选择目标标题之后的所有 a

But The xpath above matches too many things.

在您的完整文档中,目标标题之后可能还有其他 ul 元素。在这种情况下,您可以将 [1] 附加到 XPath 中的 ul 步骤,以将选择限制为紧随其后的 ul 元素:

//h3/a[contains(text(),'Alabama')]/following::ul[1]/li/a

或者,清理一下:

//h3[a='Alabama']/following-sibling::ul[1]/li/a

这会将 a 元素限制为紧随其后的 ul 元素。

关于html - 使用 xpath 获取下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706038/

相关文章:

javascript - 带有 freezon 最后一列的网格

html - 为什么清除 :both? 不起作用

jquery - 将关闭图标添加到固定到特定位置的模态弹出窗口

c# - 用 OpenXML 中的图像替换文本持有者

java - 尝试使用 dom4j 解析 XML 时属性值为 null

xml - xslt 将位置作为参数传递会产生奇怪的结果?

xml - 按条件对 i​​mg 进行 DOMDocument xpath 查询

javascript - 如何使用百分比调整 svg 的大小

php - PHP 中的 XPath - SimpleXMLElement 键数字而不是文本

sql - 在其他数据库产品中是否有等同于 MS SQL 'FOR XML PATH' 的东西?