0

奇妙な問題が発生しました...いくつかのWebサイトを確認しましたが、コードに問題は見つかりませんでした...しかし、返されます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);
}

catchステートメントで、私はキャッチ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を引数として取得しています。

4

4 に答える 4

2

ここで役立つ情報は十分ではありませんが、シェルでuri_thisという変数を出力しているのに、解析するURLを逆参照していることに気づきましたか?したがって、ログファイルにhttp://mywebsite.com/products_xml.php?cPath=43と表示されているからといって、変数urlが初期化され、その文字列も含まれていることを自動的に意味するわけではありません。

または、URLオブジェクトのopenStream()メソッド(タイプが何であれ)が条件によってはnullを返し、InputSourceがコンストラクターでnullの受け渡しを処理できない可能性があります。私が言ったように-あなたの問題を解決するのに十分な情報が短いスニペットにありません。

乾杯。

于 2010-01-06T12:27:00.070 に答える
0

ねえ、あなたのすべてに感謝します。間違えました。実際、1つのケースでは、開始タグと終了タグの間にテキストがありませんでした...したがって、テキストを格納した変数はnullでした...その上で.toString()を呼び出しました。結果として例外が発生します-NullPointerException。4つのurの助けすべてに感謝します。

于 2010-01-08T12:34:04.017 に答える
0

Android10xでのXML解析を現在よりも簡単にするためのライブラリをリリースしました。これは非常に小さな抽象化レイヤーであり、ランタイムによって提供される既存のxmlプル解析ライブラリの上にあり、要素への単純なxpathのようなパスを使用して解析された値を取り戻すことができます。

パフォーマンスへの影響は、既存の解析操作に加えてほとんど何もありません。これは非常にシンプルでクリーンな実装です: http ://www.thebuzzmedia.com/software/simple-java-xml-parser-sjxp/

于 2011-02-23T19:34:05.430 に答える
0

上記の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で動作します...

于 2013-04-05T10:57:29.353 に答える