【问题标题】:HtmlUnit's DomElement can't save state of XPath resultHtmlUnit 的 DomElement 无法保存 XPath 结果的状态
【发布时间】:2016-03-14 21:08:25
【问题描述】:

当我搜索大文档时,有时我需要保存大 XPath 表达式的结果,但如果我尝试将 XPath 结果存储在 DomElement 对象中并仅在我指向 DomElement 对象的代码块上进行新的 XPath 查询,我根据整个文档获取结果。例如:

DomElement block = page.getByXPath("//div[@class='block_of_code']");
System.out.println(block.getByXPath("//span[@class='red']"));

因此,第一行将获取页面上具有 class='block_of_code' 的所有 div。但是当我尝试从块对象中打印出所有跨度元素时,我会返回页面上的所有跨度元素,而不仅仅是在那个块中。

是否有替代方案(最好在 HtmlUnit 包中)存储小块 html 块并仅在其上而不是整个页面上通过 xPath 进行操作?

谢谢!

【问题讨论】:

    标签: html xml xpath


    【解决方案1】:

    / 字符开头的 XPath 表达式将始终查询整个文档,即使您将上下文节点传递给函数。

    要进行相对于上下文节点的查询,您可以以 . 字符开头。

    以下应该可以实现您想要的:

    DomElement block = page.getByXPath("//div[@class='block_of_code']");
    System.out.println(block.getByXPath(".//span[@class='red']"));
    

    【讨论】:

      猜你喜欢
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多