6
我有一個網站結構看起來是這樣的:HtmlUnit 2.8 getFirstByXPath不同於HtmlUnit 1.14 getFirstByXPath?
<div class='main_container'>
<div class='item_container'>
<div class='body'>
<span class='item_name'>Item 1</span>
<span class='item_desc'>Desc 1</span>
</div>
</div>
<div class='item_container'>
<div class='body'>
<span class='item_name'>Item 2</span>
<span class='item_desc'>Desc 2</span>
</div>
</div>
...
</div><!--End of main_container-->
//Note: Some divs might not have <span @class='item_name'>Item N</span> or other elements inside the item_container
在的HtmlUnit 1.14,如果我要得到所有項目名稱:
List<HtmlDivision> divs = (List<HtmlDivision>)page.getByXPath("//div[@class='item_container']");
for(HtmlDivision div:divs){
String name = ((HtmlElement)div.getFirstByXPath("//span[@class='item_name']")).asText();
System.out.println(name);
}
輸出:
Item 1
Item 2
...
但在HtmlUnit 2.8當我做同樣的我得到。
Item 1
Item 1
...
在HtmlUnit 2.8中有這個解決方法嗎?
的JavaDoc的方法說,「從這個節點計算指定的XPath表達式,返回第一個匹配的元素,如果沒有節點匹配指定的XPath表達式,則返回null。「那麼它不應該在調用此方法的節點內搜索元素嗎? – Viraj