2017-04-09 56 views
1

我有以下HTML结构。每个<div>代表一个州和每一个<a>标签表示状态用于选择所有兄弟的XPath直到一个div

<div class="country">AL</div> 
<a href=somelink>City1</a> 
<a href=somelink>City2</a> 
<a href=somelink>City3</a> 
<a href=somelink>City4</a> 
<a href=somelink>City5</a> 
<div class="country">CA</div> 
<a href=somelink>City21</a> 
<a href=somelink>City22</a> 
<a href=somelink>City23</a> 
<a href=somelink>City24</a> 
<div class="country">IL</div> 
<a href=somelink>City31</a> 
<a href=somelink>City32</a> 
<a href=somelink>City33</a> 
<a href=somelink>City34</a> 

我需要提取所有属于一个特定状态的标签内的城市。
我尝试这样做:

//*[contains(text(), "CA")]/following-sibling::a[preceding::div] 

但它让我

City21 City22 City23 City24 City31 City32 City33 City34

,而我只是想

City21 City22 City23城市24

回答

2

试试下面XPAth表达:

//a[count(following-sibling::div)=count(//div[text()="AL"]/following-sibling::div)-1] 

//a[preceding-sibling::div[2][text()="AL"]] 
+0

靶心!谢啦! – morea030

1

您可以选择标签a使得第一div之前包含状态缩写:

//a[preceding::div[1][contains(text(), "CA")]] 
相关问题