2016-08-17 1 views
0

Quelqu'un peut-il m'aider à comprendre cette erreur? J'essaie d'analyser un fichier XML et d'obtenir le contenu. Mais chaque fois que je reçois cette erreur. Il y a beaucoup de gens avec une erreur similaire mais rien ne m'a encore aidé.Android - Référence d'objet null, fichier de Parsing 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) 

Voici une partie de mon code. Je ne peux même pas chercher des enfants avec "item". Je reçois l'erreur déjà ici: 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; 
    } 
} 

Ce ist le fichier XML, je tente d'analyser: Link

+0

vous pouvez afficher le contenu du document aussi. –

+0

@Koss pouvez-vous écrire vos données XML? –

+0

J'ai ajouté le lien du fichier XML. – Koss

Répondre

1

J'ai trouvé une solution pour mon problème. Je cherchais un mauvais article.

L'élément correct i besoin est Node channel = root.getChildNodes().item(0); au lieu de Node channel = root.getChildNodes().item(1);