如何在给定的html元素中使用xpath搜索?

时间:2019-04-01 19:51:52

标签: java xpath

我有以下代码:

    HtmlPage searchPage = mainWebClient.getPage(searchUrl);
    List<HtmlListItem> lis = searchPage.getByXPath("//div[@id='mainContent']//li[contains(@id, 'results-listing')]");
    for (HtmlListItem li : lis) {
        List<Object> linkXPath = li.getByXPath("//a[contains(@class, 'itemlink')]/@href");
    }

在第四行中,我只想在li中而不是在整个页面中使用XPath搜索。如果我放在那里: searchPage.getByXPath(“ // a [包含(@class,'itemlink')] / @ href”); 结果将是相同的。如何不在整个文档中搜索,而仅在li中搜索?

2 个答案:

答案 0 :(得分:1)

使用索引而不是每个索引。

searchPage.getByXPath("(//div[@id='mainContent']//li[contains(@id, 'results-listing')])[" + index + "]//a[contains(@class, 'itemlink')]/@href");

答案 1 :(得分:1)

您的问题来了,因为使用了absolute location path(基本上是从/开始的位置路径)。

您需要相对位置路径。使用:

descendant::a[contains(@class, 'itemlink')]/@href

或缩写

.//a[contains(@class, 'itemlink')]/@href