私は、HTMLテキストを掃除する方法を探しています。これらは通常、プログラマーではない人によって書かれており、HTMLにはいくつかの問題があります。ここで私が試したものです:jsoup - 不足しているタグと壊れているタグを含むHTMLをクリーニングする
Parser p = Parser.htmlParser();
String test = "Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>";
Document d = p.parseInput(test, StringUtils.EMPTY);
System.out.println("BEFORE: " + test);
System.out.println("JSPARSED: " + StringUtils.remove(d.body().html(), "\n"));
System.out.println("JSOUP: "+ Jsoup.clean(test, StringUtils.EMPTY, Whitelist.relaxed()));
出力は次のとおりです。
BEFORE: Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>
JSPARSED: Here is a <i>fake message.<br><b><i>- Publisher</i></b></i>
JSOUP: Here is a
<i>fake message.<br><b><i>- Publisher</i></b></i>
所望の出力は次のようになります。
Here is a <i>fake</i> message.<br><b><i>- Publisher</i></b>
はそれがjsoupを使用して上記のような状況のためにHTMLをきれいにすることは可能です?
EDIT:もう少しコンテキストを追加するには、このHTMLブロックが製品の説明としてWebサイトに表示されます。これは、通常、マーケティングチームやサイト運営者によって書かれ、時にはHTMLに間違いがあります。現在、JTidyをHTMLクリーンアップに使用してからWebサイトに表示しています。
私は最近、何個の製品でエラーが発生しているのかを確認するプログラムを実行しました。エラーが発生した製品は約30,000件でした。それらのいくつかを見直した後、エラーの大部分は誤った順序(プログラムで修正された)のタグであるが、例のようにタグが見つからないか破損したというエラーは、意図したとおりに修正されていない。
不正な形式のHTMLをプログラマチックに書いた人の意図を判断することは非常に難しいと思われます。もしあなたがこれをやりたい理由を説明すれば、誰かがより良い解決法を提案するかもしれませんか? – Chris