作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的站点结构看起来像这样:
<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 中是否有解决此问题的方法?
最佳答案
可能是 HtmlUnit 1.4 存在您正在利用/依赖的错误。
在您显示的代码中,for
中的 XPath循环应该在每次执行时返回相同的元素(就像它在 v2.8 中所做的那样),因为它以 //
开头,它从根节点开始查看整个文档,并返回它找到的第一个。
如果您希望它与 <div>
相关在循环中,您应该将 XPath 调整为:.//span[@class='item_name']
关于java - HtmlUnit 2.8 getFirstByXPath 与 HtmlUnit 1.14 getFirstByXPath 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691550/
我的站点结构看起来像这样: Item 1 Desc 1
我是一名优秀的程序员,十分优秀!