0

背景: 私は、HTML ファイルを調べて、Lorem Ipsum で<script>ないタグ内のすべてのコンテンツを置き換える Java プログラムを作成しています。<style>私はもともと、> と < の間のすべてを削除する正規表現でこれを行っていましたが、実際には非常にうまく機能しました (冒涜的なことは知っています)。 htmlで正規表現を使用しようとすることで、宇宙の神聖さを失いました。

私は HtmlCleaner を使用しようとしています。これは、他に依存関係がないため、私を惹きつけた Java ライブラリです。ただし、それを実装しようとすると、次のようなhtmlを処理できませんでした:

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

問題は簡単です。TagNodeVisitor が div に到達したら、そのコンテンツを適切な量のリップサムに置き換えると、span タグが削除されます。しかし、他に子がない TagNode だけにドリルダウンすると、テキストの最初のビットを見逃すことになります。

HtmlCleaner には ContentNode オブジェクトがありますが、そのオブジェクトには replace メソッドがありません。これに対処するために私が考えることができるものは、あまりにも複雑すぎるに違いないようです. HtmlCleaner またはあなたがよく知っている他の解析ライブラリを使用して、これに対処する方法に精通している人はいますか?

4

2 に答える 2

0

HtmlCleaner の ContentNode には、 java.lang.StringBuilderを返すメソッドgetContent()があります。これは変更可能で、任意の値に変更できます。

于 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 に答える