2015-05-31 110 views
1

我需要從URL獲取一些信息(「http://someurl.com/file.xml」)。 標籤中的信息 - 「名稱」,「姓氏」。從url解析xml。例外

我該怎麼做?

我知道我必須使用AsyncTask進行互聯網連接。

我試圖使用的AsyncTask XMLPullParser,但我得到的例外 「IndeOutOfBound」

class RequestTask extends AsyncTask<String, Void, Void> { 
     String name; 

     @Override 
     protected InputStream doInBackground(String... uri) { 
       try { 
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
        factory.setNamespaceAware(true); 
        XmlPullParser xpp = factory.newPullParser(); 
        xpp.setInput(new InputStreamReader(
          getUrlData("http://someurl.com/file.xml"))); 

        while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) { 
         if (xpp.getEventType() == XmlPullParser.START_TAG) { 
          if (xpp.getName().equals("name")) { 
           name=xpp.getAttributeValue(0); 
          } 
         } 
         xpp.next(); 
        } 
       } catch (Throwable t) { 
       } 

} catch (IOException e) { 
     //Handle problems.. 
     } 
     return null; 
     } 

@Override 
protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 

     Toast.makeText(getActivity().getApplicationContext(), 
     "name="+name, Toast.LENGTH_SHORT).show(); 

     } 

}

+1

嗨 - 你有沒有得到解決?我猜你的XML看起來像' Joe Blow'。只是猜測(根據您提供的這些信息)。但是這樣的元素沒有「屬性」,如果你試圖調用「xpp.getAttributeValue()」,會導致「indexOutOfBounds」異常。問:你有沒有發現問題?問:我的回覆中的鏈接是否有幫助? – paulsm4

+0

你是對的人!非常感謝! – researcher

回答

1

中只看 「file.xml」 的XML。

我懷疑的錯誤是在這裏:

... 
if (xpp.getEventType() == XmlPullParser.START_TAG) { 
    if (xpp.getName().equals("name")) { 
    name=xpp.getAttributeValue(0); // <- Does your"<name>" tag have any attributes??? 

下面是Android上的XML處理一些教程:

尤其要注意使用getText()來獲取元素內容。

+0

對,夥計!非常感謝!我很累,很困..你對我的標籤是正確的「」沒有屬性,我需要這個標籤的文本) – researcher