对java HTML解析器/编辑器的建议

在尝试使用第三方HTML编辑器来执行(我希望)操作简单的问题后,我遇到了问题。 由于这些问题,我正在寻找可用于执行操作的替代HTML解析器的建议。

这是我的情况,我在我的html中有span标签(带有ID属性来识别它们),我只想根据客户端另一个区域的更新来替换它们的内容。 例如:

  

Hello name you are age

我一直在尝试在javax.swing.text使用HTMLDocument类,如下所示:

 Element e; e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "1"); document.setInnerHTML(element, "John"); e = doc.getElement(document.getDefaultRootElement(), Attribute.ID, "2"); document.setInnerHTML(element, "99"); 

但返回的元素是一个叶元素,不允许设置innerHTML。 不幸的是,文档,阅读器和解析器都是由第三方提供的,所以我无法真正修改它。

那么,我希望的是其他人遇到过类似的问题并且可以推荐一个替代库来做到这一点?

在此先感谢,B。

你真的不能用java.swing.text.HTMLDocument来实现吗?

我从来没有试过这个,但通过API阅读的内容

 document.replace(e.getStartOffset(), e.getEndOffset()-e.getStartOffset(), "John", null) 

而不是使用setInnerHtml()可以工作。

你试过HTML Parser吗? 它是一个强大的Java开源HTML解析库。

HTMLParser是一个很棒的库,但它是LGPL,可能不适合某些商业项目。

如果您的html格式正确,那么您可以进入Dom4J遍历节点,如果您的HTML格式不正确,您可以将Tidy与Dom4J结合使用

我在使用TagSoup的当前项目上运气不错。

我非常成功地使用了JTidy 。 它接收HTML,删除废话,所以你有一个合适的DOM对象,然后只需使用XPath来改变你的目标。