2012-04-26 58 views
0

我想解析xml從遠程serverSAXParser錯誤,而試圖解析Xml從遠程服務器在Android

我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文件..你會告訴我我做錯了什麼?

許多在此先感謝。

+0

請顯示帶有錯誤的堆棧跟蹤。爲了做到這一點,你將不得不刪除你的catchall例外條款,這是不好的做法。 – 2012-04-26 00:53:53

回答

0

我想你忘了添加上網權限。 嘗試在您的AndroidManifest.xml中添加下列行:

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