首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTMlUnit - getByXPath -从属性列表中获取值

HTMlUnit - getByXPath -从属性列表中获取值
EN

Stack Overflow用户
提问于 2021-08-27 06:04:59
回答 1查看 65关注 0票数 0

我试图仅从hrefs属性的xpath查询中获取值,但我不知道如何声明该查询,充其量我在需要使用getValue()获取实际链接的DomAttr列表中获取ref。

我非常简单的设置如下:

代码语言:javascript
运行
复制
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage(siteRef);
var hrefs = page.getByXPath("//@href"); // Returns a list of DomAttr

E:这会返回值,但也只会返回找到的第一个元素

代码语言:javascript
运行
复制
var hrefs = page.getByXPath("string(//@href)");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-27 07:36:27

我想你是对的,没有办法从String值中获得getByXPath的数组(或List)。

不过,您可以通过利用java streams来实现这一行为。在这里,您可以从使用该结果列表的其他可能性中受益(例如,对其进行过滤或使用其他处理,如String上的toLowerCase ):

代码语言:javascript
运行
复制
var hrefs = page.getByXPath("//@href")
                .stream()
                .filter(o -> o instanceof DomAttr) //to be sure you have the correct type
                .map(o -> ((DomAttr) o)) //cast the stream from Object to DomAttr
                .map(DomAttr::getValue) //get value of every DomAttr
                .collect(Collectors.toList()); //collect it to a list

hrefs现在包含一个List<String>

您可以进一步处理流,而不是在最后一步中对结果进行collect

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68948709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档