Android XML解析
-
19-09-2019 - |
質問
奇妙な問題が発生しました...私はいくつかのウェブサイトをチェックしましたが、コードに何も問題が見つかりませんでした...しかしそれは戻ります NullPointerException
...
try {
SAXParserFactory f = SAXParserFactory.newInstance();
SAXParser parser = f.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(handler);
System.out.println(uri_this);
reader.parse(new InputSource(url_this.openStream())); // i get nullpointerexception here
} catch (NullPointerException e) {
System.out.println(e);
}
キャッチステートメントで私は捕まえました NullPointerException
エラーを印刷させました。
ContentHandler
小さなファイル用に解析されたファイルを持っているので問題ありませんが、大きなファイルの場合、機能しないようです。何が問題ですか?または、より大きなファイルにバッファリングが必要ですか?私は無知であり、そのためのコーディングがわからないので、バッファリング以外のすべての可能性を試しました。
私は1つのことを理解しました:入力ソースのオブジェクトは前に解放されます reader.parse
終了できます。なぜそれが起こっているのかわかりません。
LogCat
次のことを示します(誤った部分のみ):
01-06 15:12:27.145: INFO/System.out(319): http://mywebsite.com/products_xml.php?cPath=43
01-06 15:12:31.094: DEBUG/dalvikvm(319): GC freed 4031 objects / 203424 bytes in 189ms
01-06 15:12:31.505: DEBUG/dalvikvm(100): GC freed 3326 objects / 190192 bytes in 283ms
01-06 15:12:34.274: DEBUG/dalvikvm(319): GC freed 1153 objects / 80432 bytes in 146ms
01-06 15:12:34.646: INFO/System.out(319): java.lang.NullPointerException
url "url_this" 4mを引数として4mで取得しています。
解決 2
ねえ、すべてuに感謝します。間違いがありました。実際には、スタートタグとエンドタグの間にテキストがありませんでした...したがって、テキストを保存した変数はnullでした...私はそれについて.toString()に電話しました。例外をもたらします-nullpointerexception。 4 urすべてのヘルプに感謝します。
他のヒント
ここであなたを助けるのに十分な情報はありませんが、あなたはあなたが呼ばれる変数を印刷していることに気づきましたか uri_this シェルでは逆に URL 解析される?ログファイルが表示されるからといって http://mywebsite.com/products_xml.php?cpath=43 変数を自動的に意味するものではありません URL 初期化されており、その文字列も含まれています。
または、URLオブジェクトのOpenStream()メソッド(タイプが何であれ)がいくつかの条件でnullを返し、入力ソースはコンストラクターのnullを渡すことを処理できません。私が言ったように、あなたの問題を解決するために、短いスニップレットには十分な情報がありません。
乾杯。
Android 10XでのXMLの解析を現在よりも簡単にするために、ライブラリをリリースしました。これは、ランタイムが提供する既存のXMLプル解析ライブラリの上にある非常に小さな抽象化レイヤーであり、単純なXpathのようなパスを要素に使用して解析値を取り戻すことができます。
パフォーマンスへの影響は、既存の操作の上にほとんど何もありません。非常にシンプル/クリーンな実装です。http://www.thebuzzmedia.com/software/simple-java-xml-parser-sjxp/
上記のURLを確認してください http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/
xmlparser.javaで行われた変更
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
xml = EntityUtils.toString(httpEntity);
それはinshaallahに動作します...