0

背景:我正在编写一个 Java 程序来遍历 HTML 文件并替换标签中没有<script><style>使用 Lorem Ipsum 的所有内容。我最初使用正则表达式执行此操作,只是删除了 > 和通过尝试在 html 上使用正则表达式,不再是宇宙的神圣性。

我正在尝试使用 HtmlCleaner,这是一个吸引我的 Java 库,因为它没有其他依赖项。但是,尝试实现它我一直无法像这样处理 html:

<div>
    This text is in the div <span>but this is also in a span.</span>
</div>

问题很简单。当 TagNodeVisitor 到达 div 时,如果我用适量的lipsum 替换它的内容,它将消除span 标签。但是,如果我只深入到没有其他子节点的 TagNodes,我会错过第一段文本。

HtmlCleaner 有一个 ContentNode 对象,但该对象没有替换方法。我能想到的任何处理这个问题的方法似乎都太复杂了。是否有人熟悉使用 HtmlCleaner 或您更熟悉的其他解析库来处理此问题的方法?

4

2 回答 2

0

HtmlCleaner 的 ContentNode 有一个getContent()方法,它返回一个java.lang.StringBuilder。这是可变的,可以更改为您想要的任何值。

于 2011-09-05T20:44:57.600 回答
0

您几乎可以使用JSoup 设置器做任何您想做的事情

那适合你吗?

 Element div = doc.select("div").first(); // <div></div>
 div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
于 2011-08-29T02:14:33.250 回答