我一直遇到一个又一个问题,试图使用第三方HTML编辑器来做(我希望)是一个简单的操作。由于这些问题,我正在寻找替代HTML解析器的建议,我可以使用它来执行操作。
这就是我的情况,我的html中有span标记(使用ID属性来标识它们),我只是想根据客户端另一个区域的更新来替换它们的内容。例如:
<html>
<body>
<p>Hello <span id="1">name</span> you are <span id="2">age</span></p>
</body>
</html>我一直在尝试使用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。
发布于 2009-04-02 12:36:34
你真的不能用java.swing.text.HTMLDocument做到这一点吗?
我从来没有尝试过这样做,但是通过API读到了一些类似于
document.replace(e.getStartOffset(), e.getEndOffset()-e.getStartOffset(), "John", null)而不是使用setInnerHtml()可以工作。
发布于 2009-04-02 10:57:05
你试过HTML Parser吗?它是一个健壮的、开源的Java HTML解析库。
发布于 2009-04-02 11:13:21
HTMLParser是一个很棒的库,但它是LGPL,可能不适合一些商业项目。
如果您的html格式良好,那么您可以使用Dom4J遍历节点,如果您的HTML格式不正确,您可以结合使用Tidy和Dom4J
https://stackoverflow.com/questions/709233
复制相似问题