10

解析する必要のあるXMLがありますが、作成を制御できません。残念ながら、これはそれほど厳密なXMLではなく、次のようなものが含まれています。

<mytag>This won't parse & contains an ampersand.</mytag>

javax.xml.streamクラスはこれをまったく好まないため、次のエラーが発生します。

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50]
Message: The entity name must immediately follow the '&' in the entity reference.

どうすればこれを回避できますか?XMLを変更できないので、エラー耐性のあるパーサーが必要だと思います。

私の好みは、既存のパーサーコードをあまり中断する必要のない修正です。

4

3 に答える 3

14

tidyまたはなどのライブラリを使用しますtagsoup

TagSoupは、Javaで記述されたSAX準拠のパーサーであり、整形式または有効なXMLを解析する代わりに、HTMLを実際に見られるように解析します。

于 2009-05-28T11:16:33.340 に答える
6

それが(上記のように)有効なXMLでない場合、(あなたが特定したように)XMLパーサーはそれを処理しません。エラーの範囲(上記のエンティティの問題など)がわかっている場合、最も簡単な解決策は、エラーの修正プロセス(エンティティの挿入などのエンティティの修正)を実行してから、既存のパーサーにフィードすることです。

それ以外の場合は、そのような異常に対する組み込みのサポートを使用して、自分でコーディングする必要があります。そして、それが退屈でエラーが発生しやすい作業以外の何物でもないと私は信じられません。

于 2009-05-28T11:19:52.677 に答える
1

JSoupは不正な形式のXMLを処理できると思います

于 2011-06-16T21:39:33.330 に答える