Android XML 解析器不工作但运行

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

 }
}

最佳答案

使用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>

关于Android XML 解析器不工作但运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239322/

相关文章:

ruby - 使用 REXML Document 和 Ruby 获取元素的 InnerXML

c# - "Data at the Root Level is invalid"与 LoadXml

java - 如何将字符串解析为 BigDecimal?

android - Android 设备上的 Silverlight/Moonlight

android - 全屏 TYPE_SYSTEM_ALERT [无状态和导航栏]

android - 在 RxJava Observable 中创建 Facebook Graph Request

Android 光线传感器 - 检测明显的光线变化

java - 不显示 Android 应用程序的准确输出

regex - 用 bash 解析字符串并提取数字

java - 如何将 String 转换为 Java.util.Date 包括 ISO8601