2016-08-17 2 views
0

誰でもこのエラーを理解できますか?私はXMLファイルを解析して内容を取得しようとします。しかし、毎回私はこのエラーが発生します。似たようなエラーを持つ人がたくさんいますが、まだ何も私を助けませんでした。Android - nullのオブジェクト参照、RSSファイルの解析

08-17 10:34:18.589 25213-25567/com.example.entwicklung1.designtestapp E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2 
                        Process: com.example.entwicklung1.designtestapp, PID: 25213 
                        java.lang.RuntimeException: An error occurred while executing doInBackground() 
                         at android.os.AsyncTask$3.done(AsyncTask.java:309) 
                         at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                         at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                         at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                         at java.lang.Thread.run(Thread.java:818) 
                        Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'org.w3c.dom.NodeList org.w3c.dom.Node.getChildNodes()' on a null object reference 
                         at com.example.entwicklung1.designtestapp.ReadRssZander.ProcessXml(ReadRssZander.java:66) 
                         at com.example.entwicklung1.designtestapp.ReadRssZander.doInBackground(ReadRssZander.java:58) 
                         at com.example.entwicklung1.designtestapp.ReadRssZander.doInBackground(ReadRssZander.java:29) 
                         at android.os.AsyncTask$2.call(AsyncTask.java:295) 
                         at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                         at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
                         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
                         at java.lang.Thread.run(Thread.java:818) 

ここは私のコードの一部です。私は「アイテム」の子アイテムを探すことさえできません。私はすでにここでエラーが出ます:NodeList items = channel.getChildNodes();

@Override 
protected Void doInBackground(Void... params) { 
    ProcessXml(Getdata()); 
    return null; 
} 

private void ProcessXml(Document data) { 
    if(data!=null) { 
     Element root = data.getDocumentElement(); 
     Node channel = root.getChildNodes().item(1); 
     NodeList items = channel.getChildNodes(); 

     //for(int i=0;i<items.getLength();i++){ 
     // Node currentchild = items.item(i); 
     // Log.d("textcontent",currentchild.getTextContent()); 
      // if(currentchild.getNodeName().equalsIgnoreCase("item")){ 
      //  NodeList itemchilds=currentchild.getChildNodes(); 
      //  for(int j=0;j<itemchilds.getLength();j++){ 
      //   Node current= itemchilds.item(j); 
      //   Log.d("textcontent",current.getTextContent()); 
      //  } 
      // } 
     //} 
    } 
} 

public Document Getdata(){ 
    try { 
     url = new URL(adress); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 
     InputStream inputStrem = connection.getInputStream(); 
     DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder=builderFactory.newDocumentBuilder(); 
     Document xmlDoc =builder.parse(inputStrem); 
     return xmlDoc; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

これは、XMLファイルをイスト、私が解析してみてください:Link

+0

あなたも、文書の内容を投稿することができます。 –

+0

@KossあなたのXMLデータをpoatできますか? –

+0

XMLファイルのリンクを追加しました。 – Koss

答えて

1

私は私の問題の解決策を見つけました。間違った商品を探していた。

私は必要な正しい項目がNode channel = root.getChildNodes().item(0); 代わりのNode channel = root.getChildNodes().item(1);

関連する問題