5

XSLT 変換の結果である HTML コードがいくつかあります。(XML->HTML)

結果の HTML に対して別の XSLT 変換を実行したいと考えています。(HTML->HTML)

私の問題は、最初の変換が「」のような閉じられていないタグを返す可能性があること<img>です。これは、結果の HTML を DocumentBuilder で解析できないことを意味します。これは、SAXparser を使用し、もちろん、HTML ファイルが常に有効な xml ではないためです。(次の XY タグを閉じる必要があるという例外が発生します。)

2つの解決策があると思います。

  1. 閉じられていないタグを閉じて、結果の HTML を修正します。

  2. ある種の HTML パーサーを使用して有効な org.w3c.dom.Document を取得し、SAX などの XML パーサーをスキップします。

私は本当に最初の変換に使用したのと同じ方法を主に使用したいので、問題の上の解決策の1つを好むのは、役立つ明らかなサードパーティのjarが見つからないことです. (私は見ましたが。)基本的に私はここで私のオプションが何であるかを知りたいのですが、この問題の解決策はありますか?

どんな助けでも大歓迎です。

4

3 に答える 3

6

必要なのはJsoup : Java HTML Parser. きちんとしたHTMLを出力する機能があります。

String html = "<p>The recurrence, in close succession <ul><li>list item 1</li><li>list item 2</li></ul> second part of thisssss";
String clean = Jsoup.clean(html, Whitelist.relaxed());

他のホワイトリストも使用できます。

于 2013-03-04T14:44:14.587 に答える
4

代替テキストTagSoup - ジャスト・キープ・オン・トラッキン代替テキスト

TagSoupを使用して、すべてのドキュメントが整形式であることを確認 できます。

... Java で書かれた SAX 準拠のパーサーで、整形式または有効な XML を解析する代わりに、実際に見られるままに HTML を解析します。

TagSoup は、合理的なアプリケーション設計に似たものを使用して、このような処理を行う必要がある人向けに設計されています。

SAX インターフェイスを提供することにより、標準の XML ツールを最悪の HTML に適用することもできます。TagSoup には、HTML ファイルを読み取り、クリーンな HTML または XHTML に近い整形式の XML を生成できるコマンドライン プロセッサも含まれています。

Saxon を使用している場合は、次のオプションを追加して TagSoup をパーサーにすることができます

... -x org.ccil.cowan.tagsoup.ParserTagSoup が Java クラスパス上にあることを確認した後、標準の Saxon オプションを使用できます。

これを使用して、HTML ドキュメントを 1 回のパスで解析および変換しましたが、うまく機能することがわかりました。XML ツールを使用して操作および変換できる整形式の XHTML ドキュメントとしてドキュメントを読み取ります。

また、C++ の TagSoup である Taggle が利用可能になりました

于 2013-03-04T16:19:10.817 に答える
0

XML を整理する必要があります。このライブラリを試してください:

http://jtidy.sourceforge.net/

于 2013-03-04T14:48:41.960 に答える