背景:我正在编写一个Java程序来浏览HTML文件,并用Lorem Ipsum替换非<script>
或<style>
的标签中的所有内容。我最初使用正则表达式执行此操作只是删除&gt;之间的所有内容。和一个&lt;,它实际上运作得很好(我知道亵渎神明),但我试图把它变成一个其他人可能会觉得有用的工具,所以我不敢通过试图使用正则表达式来威胁宇宙的神圣性在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或其他一些您更熟悉的解析库?
答案 0 :(得分:0)
你几乎可以用JSoup setters
做任何你想做的事情这适合你吗?
Element div = doc.select("div").first(); // <div></div>
div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div>
答案 1 :(得分:0)
HtmlCleaner的ContentNode有一个返回getContent()的方法java.lang.StringBuilder。这是可变的,可以更改为您想要的任何值。