2013-04-08 65 views
0

我已經搜索了兩天,我可能已經看到了一個解決方案,可以解決我的問題,但我還沒有找到一個我明白的問題。來自url.xml的Android Pull Parser

我下面這個教程 - Simple XMLPullParser Tutorial

我知道我需要改變這兩個領域是

這裏

public List<Employee> parse(InputStream is) { 
    XmlPullParserFactory factory = null; 
    XmlPullParser parser = null; 
    try { 
     factory = XmlPullParserFactory.newInstance(); 
     factory.setNamespaceAware(true); 
     parser = factory.newPullParser(); 

     parser.setInput(is, null); 

     int eventType = parser.getEventType(); 

和這裏

List<Employee> employees = null; 
    try { 
     XMLPullParserHandler parser = new XMLPullParserHandler(); 
     employees = parser.parse(getAssets().open("employees.xml")); 

這是從工作的例子,下面是什麼,我想實現,刪除此

員工= parser.parse(getAssets()打開(「employees.xml」))拍攝;

我試圖得到類似

網址URL =新的URL( 「http://www.example.xml」);

URLConnection connection = url.openConnection();

InputStream in = connection.getInputStream();

employees = parser.parse(in);

第一件我不太確定要改變什麼,第二我知道我需要添加url並打開一個連接。然後更改employees = parser ...行,但是到此爲止,沒有運氣可以獲得工作響應。

我已添加android.permission.INTERNET。

我還在資產文件夾中添加了我自己的XML文件,這是我想要解析的url的副本,可以正常工作。

任何幫助將不勝感激。

回答

0

請在這裏看到我的答案。 Android : XmlpullParser exception

此外,還要確保在

XmlUtils.beginDocument(parser,"results"); 

「結果」 是你的XML的第一個節點名稱。在你的情況下,它可能是「員工」

此外,網絡相關的服務可能不會通過主UI線程訪問。

請使用AsyncTask並在doInBackground()方法中添加您的方法。

private class DownloadFilesTask extends AsyncTask<String, Void, String> { 
protected Long doInBackground(String... urls) { 
    //put your xml parsing code here. 
} 

protected void onProgressUpdate(Integer... progress) { 
    setProgressPercent(progress[0]); 
} 

protected void onPostExecute(Long result) { 
    showDialog("Downloaded " + result + " bytes"); 
} 
} 
+0

謝謝,我會給你的答案一個嘗試,我只是困惑,爲什麼我不能解析在main_activity居住的第二個片段的網址。我會稍微更新我的問題。 – TheBluePotter 2013-04-08 14:39:17