Java を使用した Android の Sax XML パーサーに関する質問: Web から取得した XML ファイルを解析する必要がありますが、それを制御することはできません。一部にはエラーが含まれており、「タグの不一致」や「形式が正しくありません (無効なトークン)」などのエラーでパーサーが異常終了します。
これらのエラーは私には関係ありません。無視して続行したいと思います。破損した XML 構造を処理できます。しかし、XML ファイルを修正することはできません。それらは私のものではありません。Android 上の Sax (クラス org.xml.sax.XMLReader) に、例外をスローせずに続行するように指示するにはどうすればよいですか? ErrorHandler をアタッチしてもうまくいきませんでした。また、停止した場所から解析を再開できないため、例外をキャッチしても意味がありません。
私の XML は HTML ではありませんが、ブラウザがエラーを無視して続行する (X)HTML の例をいくつか示します。私もこれをやりたいです。
- タグが閉じられていなくても、ブラウザーは" <br/> "の代わりに" <br> " で問題ありません。
- " <b><i> text </b></i> " は、終了タグの順序が間違っていても機能します。
- 「オッズ & エンド」は無効なトークンにもかかわらず受け入れられます。「オッズ & エンド」は正しいでしょう。
文字セットの変換などを処理する独自のパーサーを作成したくありません。XML を検証する必要はありません。これが私のコードです。
XMLReader r = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
r.setErrorHandler(new MyLenientErrorHandlerThatNeverThrows());
r.setContentHandler(new MyImporterThatExtendsDefaultHandler());
r.parse(new InputSource(new BufferedReader(...)));
ありがとう!