Android XML Parser无法正常运行

时间:2010-11-21 17:57:02

标签: android xml parsing dom

我仍然不确定问题是什么...它运行但没有显示任何内容。想法?

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);

 }
}

1 个答案:

答案 0 :(得分:1)

使用AndroidManifest.XML文件中的权限:

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

您的代码运行良好。

完整的XML是:

<?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>