【问题标题】:Trying to get attribute value with Apache Tika and XPath尝试使用 Apache Tika 和 XPath 获取属性值
【发布时间】:2021-05-11 18:48:23
【问题描述】:

我尝试了许多不同的 XPath 值,只是不明白为什么我无法使用 Apache Tika 检索我想要的内容。 我想检索随机网页上链接的 href 属性值。我设法找出如何提取标签内的内容,但试图获取属性值总是返回空。 我究竟做错了什么?! 下面是我的代码, 非常感谢

XPathParser  xhtmlParser = new XPathParser ("xhtml", XHTMLContentHandler.XHTML);
Matcher anchorLinkContentMatcher = xhtmlParser.parse("//xhtml:a/@xhtml:href/text()");
ContentHandler handler = new MatchingContentHandler(
    new ToHTMLContentHandler(), anchorLinkContentMatcher);
HtmlParser parser = new HtmlParser();
ParseContext pcontext = new ParseContext();
    
try {
    parser.parse(urlContentStream, handler, new Metadata(),pcontext);
    System.out.println(handler);
}
catch (Exception e)
{....}

我尝试过这些不同的 XPath:

//xhtml:a/@xhtml:href
//xhtml:a/@href/text()
//xhtml:a/@href
//@xhtml:href/text()

【问题讨论】:

    标签: java xpath attributes apache-tika


    【解决方案1】:

    你快到了……你需要:

    //xhtml:a/@href
    

    【讨论】:

    • 感谢您的回答。我在写问题时犯了一个错误(在我尝试过的其他 XPath 中)。编辑了问题。但是 //xhtml:a/@href 仍然返回空内容,我只是不明白为什么......我认为这是我如何使用 Tika 库的问题,但我不明白为什么看起来是有效的 XPath不起作用...
    • 对于 tika 代码可能会看到这个答案:stackoverflow.com/a/64796279/3710053
    • 我想我需要像他们一样实现解析器。但这根本没有意义。我不明白为什么我的属性没有被检索到,而且 Tika 的例子也没用。我花了几个小时试图做一些我认为应该有效的事情......而且我什至没有从 API 中得到任何迹象来说明为什么它没有。这真是令人沮丧。感谢您的建议,至少它有助于做其他事情(尽管我仍然完全不明白为什么这么简单的事情不起作用..)
    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 2017-02-14
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多