Javaを使用してAndroid上のSax XMLパーサーに関する質問:Webから取得したXMLファイルを解析する必要があります。いくつかはエラーを含んでおり、パーサーは「不一致のタグ」や「整形式でない(無効なトークン)」のようなエラーで中断します。Sax(Android上)で障害のあるXMLを解析する際のXMLエラーを無視する方法
これらのエラーは私にとっては問題ではありません。私はそれらを無視して続行したい、壊れたXML構造を処理できます。しかし、私はXMLファイルを修正することはできません、彼らは私のものではありません。例外をスローせずに続けるように、Android(クラスorg.xml.sax.XMLReader)でSaxに指示するにはどうすればよいですか? ErrorHandlerをアタッチしても機能しませんでした。例外が発生した場所での解析を再開できないため、例外をキャッチすることは役に立ちません。
私のXMLはHTMLではありませんが、ここではブラウザがエラーを無視して継続するいくつかの(X)HTMLの例があります。私もこれをやりたい
- ブラウザ "<BR>" の代わりにタグが閉じられることはありませんにもかかわらず、 "< BR/>" の罰金です。
- "<B> <私>テキスト</B > </I >" 終了タグが間違った順序になっているにもかかわらず動作します。
- 「&はを終了オッズは」無効なトークンにもかかわらず、「オッズ&アンプを、が終了し、」受け入れられている正しいだろう。
私は自分自身のパーサーを書いておらず、文字セットの変換とそのすべてを扱っています。 XMLを検証する必要はありません。ここに私のコードは、本質的に縮小された:
XMLReader r = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
r.setErrorHandler(new MyLenientErrorHandlerThatNeverThrows());
r.setContentHandler(new MyImporterThatExtendsDefaultHandler());
r.parse(new InputSource(new BufferedReader(...)));
ありがとう!