我需要从网址(“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();
}
}
答案 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()
来获取元素内容。