用xpath获取下一个元素

时间:2017-12-08 00:38:43

标签: html xml xpath

我有以下html块,我想在这种情况下获得Alabama下的所有城市链接。这是我构建的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>

1 个答案:

答案 0 :(得分:0)

  

在这种情况下,我正试图获得阿拉巴马州的所有城市链接。

您的XPath会选择跟随目标标题的所有a

  

但上面的xpath匹配太多东西。

在完整文档中的目标标题后面可能还有其他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之后的元素。