从url解析xml。例外

时间:2015-05-31 23:48:05

标签: android xml

我需要从网址(“http://someurl.com/file.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 个答案:

答案 0 :(得分: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()来获取元素内容。