2010-11-21 3 views
2

Je ne sais toujours pas quel est le problème ... il fonctionne mais rien n'est affiché. Des idées?Android XML Parser ne fonctionne pas mais fonctionne

package com.androidpeople.xml.parsing; 

import java.net.URL; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class XMLParsingDOMExample extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /** Create a new layout to display the view */ 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(1); 

    /** Create a new textview array to display the results */ 
    TextView name[]; 
    TextView website[]; 
    TextView category[]; 

    try { 

    URL url = new URL(
    "http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml"); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document doc = db.parse(new InputSource(url.openStream())); 
    doc.getDocumentElement().normalize(); 

    NodeList nodeList = doc.getElementsByTagName("item"); 

    /** Assign textview array lenght by arraylist size */ 
    name = new TextView[nodeList.getLength()]; 
    website = new TextView[nodeList.getLength()]; 
    category = new TextView[nodeList.getLength()]; 

    for (int i = 0; i < nodeList.getLength(); i++) { 

    Node node = nodeList.item(i); 

    name[i] = new TextView(this); 
    website[i] = new TextView(this); 
    category[i] = new TextView(this); 

    Element fstElmnt = (Element) node; 
    NodeList nameList = fstElmnt.getElementsByTagName("name"); 
    Element nameElement = (Element) nameList.item(0); 
    nameList = nameElement.getChildNodes(); 
    name[i].setText("Name = " 
     + ((Node) nameList.item(0)).getNodeValue()); 

    NodeList websiteList = fstElmnt.getElementsByTagName("website"); 
    Element websiteElement = (Element) websiteList.item(0); 
    websiteList = websiteElement.getChildNodes(); 
    website[i].setText("Website = " 
     + ((Node) websiteList.item(0)).getNodeValue()); 

    category[i].setText("Website Category = " 
     + websiteElement.getAttribute("category")); 

    layout.addView(name[i]); 
    layout.addView(website[i]); 
    layout.addView(category[i]); 

    } 
    } catch (Exception e) { 
    System.out.println("XML Pasing Excpetion = " + e); 
    } 

    /** Set the layout view to display */ 
    setContentView(layout); 

} 
} 
+0

Avez-vous trouvé une solution à ce problème? – bebe

Répondre

1

Utilisez l'autorisation dans le fichier AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

Votre code fonctionne bien.

Le XML complet est:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.androidpeople.xml.parsing" 
     android:versionCode="1" 
     android:versionName="1.0"> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 


    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".XMLParsingDOMExample" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 
Questions connexes