2009-05-28 7 views
10

XMLを解析する必要がありますが、XMLの作成を制御することはできません。残念ながら、それは非常に厳格なXMLがないとのようなものが含まれていますが:Javaでひどく形成された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を変更することはできませんので、私はエラー耐性パーサーが必要だと思います。

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

答えて

6

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

そうしないと、そのような異常の組み込みサポートで自分自身をコーディングする必要があります。そして、私はそれが退屈で間違いを起こしやすい仕事以外の何ものでもないと信じられません。

+0

+1自分でコーディングするために。たいていの場合、それはおそらく悪い考えですが、非常に単純なケースでは考慮する価値があります。 – xdhmoore

1

私はJSoupがひどく形成されたXMLを扱うことができると信じています

関連する問題