【问题标题】:SAXParser Error while trying to parse Xml from a remote server in Android尝试从 Android 中的远程服务器解析 Xml 时出现 SAXParser 错误
【发布时间】:2012-04-26 00:08:29
【问题描述】:

我正在尝试从远程 server 解析 xml

我的 3 个java 程序的代码如下: 1。 BillScreen.java:

package cc3012n.kalrashid;

import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class BillScreen extends Activity implements OnClickListener {

     String baseURL = "http://www.connectingtomorrow.co.uk/xmlFiles/accounts.xml";
     TextView tv;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         Button b = (Button) findViewById (R.id.bGo);
         tv = (TextView) findViewById (R.id.tvXML);

         b.setOnClickListener(this);
     }

     @Override
     public void onClick(View v) {
         try {
             URL website = new URL(baseURL);
             SAXParserFactory spf = SAXParserFactory.newInstance();
             SAXParser sp = spf.newSAXParser();
             XMLReader xr = sp.getXMLReader();
             HandlingXMLStuff doingWork = new HandlingXMLStuff();
             xr.setContentHandler(doingWork);
             xr.parse(new InputSource(website.openStream()));
             String information = doingWork.getInformation();
             tv.setText(information);
         } catch(Exception e){
             tv.setText("error");
         }
     }  
}

2。处理 XML 内容:

package cc3012n.kalrashid;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class HandlingXMLStuff extends DefaultHandler {

    XMLDataCollected info = new XMLDataCollected();

    public String getInformation() {
        return info.dataToString();
    }

     @Override
     public void startElement(String uri, String localName, String qName,
         Attributes attributes) throws SAXException {
         // TODO Auto-generated method stub
         if (localName.equals("customer_id")) {
          String customer = attributes.getValue("data");
          info.setCustomer(customer);
      } else if (localName.equals("table_id")) {
          String table = attributes.getValue("data");
          info.setTable(table);
      }
    }
}

3. XMLDataCollected.java:

public class XMLDataCollected {

    String customer = null;
    String table = null;

    public void setCustomer (String ac){
        customer = ac;
    }

    public void setTable(String tbl){
        table = tbl; 
    }

    public String dataToString(){
        return customer + " In table Number " +table;
    }
}

但是它返回一个错误..所以它无法读取xml 文件..你能告诉我我做错了什么吗?

非常感谢。

【问题讨论】:

  • 请显示错误的堆栈跟踪。为了做到这一点,你必须删除你的包罗万象的异常子句,这无论如何都是不好的做法。

标签: android xml xml-parsing sax saxparser


【解决方案1】:

我想你忘了添加访问互联网的权限。 尝试在您的 AndroidManifest.xml 中添加以下行

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

【讨论】:

  • 它不会导致:SAXParser 错误
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多