支持XPath轴的Java Html解析器?

支持XPath轴的Java Html解析器?,java,xpath,axes,Java,Xpath,Axes,下面是一个html文档的片段,我需要将其“标题”(例如FILE_BYTES_write)与第一个文本中的text()条目相关联 以下xpath在python lxml中非常有效: /td[text()='FILE_BYTES_WRITTEN']/following-sibling::td 文档片段: <td>HDFS_BYTES_READ</td> <td align="right">4,825</td> <td alig

下面是一个html文档的片段,我需要将其“标题”(例如FILE_BYTES_write)与第一个文本中的text()条目相关联

以下xpath在python lxml中非常有效:

/td[text()='FILE_BYTES_WRITTEN']/following-sibling::td
文档片段:

   <td>HDFS_BYTES_READ</td>
   <td align="right">4,825</td>
   <td align="right">0</td>
   <td align="right">4,825</td>
 </tr>

   <tr>

   <td>FILE_BYTES_WRITTEN</td>
   <td align="right">415,881</td>
   <td align="right">48,133</td>
   <td align="right">464,014</td>
 </tr>

   <tr>

   <td>HDFS_BYTES_WRITTEN</td>
   <td align="right">98,580,205</td>
   <td align="right">2,010</td>
   <td align="right">98,582,215</td>
 </tr>
HDFS\u字节\u读取
4,825
0
4,825
文件\u字节\u写入
415,881
48,133
464,014
HDFS_字节_写入
98,580,205
2,010
98,582,215
但是,当我尝试用Java实现这一点时,我的成功率就降低了。我不确定是否有任何java html解析器可以支持这一点。我目前正在使用HtmlCleaner

您可以查看哪个函数具有nice
getByXPath()
函数。这是一个不诚实的浏览器。试着看看例子


我最喜欢的另一个语法分析工具是
Jsoup
,它具有强大的功能,可以轻松完成这些事情。查看它的文档。你会找到你需要的一切。

作为序言:我确实会按照@Sage的建议来研究HtmlUnit

同时:我提出了以下解决方案:

a) HtmlCleaner实际上有一个用于转换为XHtml的DomSerializer:

public static Document toXhtml(String html) throws ParserConfigurationException {
    HtmlCleaner cleaner = new HtmlCleaner();
    TagNode tagNode = cleaner.clean(html);
    DomSerializer domSerializer = new DomSerializer(new CleanerProperties());
    return domSerializer.createDOM(tagNode);
}
b) 在我们有XHtml的时候,我们有很多选择——比如使用xalan