2

正しく生成されていない XML ドキュメントを解析すると、次のエラーが発生します。

org.xml.sax.SAXParseException: The value of attribute "bar" associated with an element type "foo" must not contain the '<' character.

問題の原因はわかっています。それはこの行です:

<foo bar="x<y">42</foo>

だったはず

<foo bar="x&lt;y">42</foo>

これが有効な XML ではないことは認識していますが、私のコードは同様のファイルを無人でダウンロードして解析する必要があり、政治的な理由から、特に他のプログラムがファイルを読み取って許容している場合は、サプライヤーに欠陥のあるプログラムを修正するよう説得することはできない可能性があります。このエラー。

それを許容するように Xerces を構成する方法はありますか? 現時点では致命的なエラーとして扱います。ドキュメントの残りの部分が解析されないため、それを無視するように を実装しErrorHandlerても満足のいくものではありません。

または、このエラーを許容するように構成できる別のストリームベースのパーサーを提案できますか? これらのドキュメントは数百メガバイトになるため、DOM パーサーを使用することは現実的ではありません。

4

2 に答える 2

5

...そして政治的な理由から、欠陥のあるプログラムを修正するようサプライヤーを説得することは不可能かもしれません...

政治的な理由から、あなたは彼らにそれを直してもらうために全力を尽くすべきです。入力が適切な形式の XML でなければならないことを示す要求仕様を彼らの前で振ります。特注のパーサーの開発費用を請求すると脅す。(OK、それはおそらくうまくいかないでしょう...)

戦いもせずにあきらめることで、将来このサプライヤーと取引をしなければならない他の人々に迷惑をかけるために問題を放置しているだけです.

于 2010-07-23T04:57:14.410 に答える
4

この種のエラーを許容する XML パーサーはないと思います。私が提案できる唯一のことは、XML を前処理して、発生する可能性のあるエラーを除去することです。

于 2010-07-23T04:41:08.597 に答える