在Java中如何对HTML使用XPath Containes?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (31)

,在这段XML中:

<div>
  <td id='1234 foo 5678'>Hello</td>
</div>

我希望能够使用以下XPath获得文本“Hello”:

//div/td[contains(@id, 'foo')]/text()

有什么方法可以获得这个功能吗?

提问于
用户回答回答于

首先将文档转换为标准就像这样:

TagNode tagNode = new HtmlCleaner().clean(
        "<div><table><td id='1234 foo 5678'>Hello</td>");
org.w3c.dom.Document doc = new DomSerializer(
        new CleanerProperties()).createDOM(tagNode);

然后使用标准JAXP接口查询它:

XPath xpath = XPathFactory.newInstance().newXPath();
String str = (String) xpath.evaluate("//div//td[contains(@id, 'foo')]/text()", 
                       doc, XPathConstants.STRING);
System.out.println(str);

产出:

Hello

扫码关注云+社区

领取腾讯云代金券