2017-12-08 39 views
1

次のHTMLブロックがあります。この場合、アラバマの下にあるすべての都市リンクを取得しようとしています。これは私が構築したxpathです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の

の内側
    <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> 

答えて

0

をXPathを使用しています。

XPathは、対象の見出しに続くすべてのaを選択します。

しかし、上記のxpathはあまりにも多くのものと一致します。

おそらく、追加のul要素が、完全なドキュメントの対象見出しの後にあるとします。

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

または、クリーンアップビットを:

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

このこの場合は、すぐに次ul要素に選択を制限するためにあなたのXPathでulステップへ[1]を追加することができますa要素は、すぐ次のものulの要素に限定されます。

関連する問題