java XmlPullParser getAttributeValue始终返回null
我正在尝试解析一个xml文件。但是方法getAttributeValue
总是为我返回null。首先是xml文件
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这是我的密码。我正在使用AsyncTask
public class XmlParser extends AsyncTask<Void, Void, String> {
private XmlPullParserFactory xmlFactoryObject;
private XmlPullParser myParser;
private File file;
FileInputStream fis;
String value;
public XmlParser() {
try {
xmlFactoryObject = XmlPullParserFactory.newInstance();
myParser = xmlFactoryObject.newPullParser();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
public void setFile(File file1) {
file = file1;
execute();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
try {
if(file == null){
Toast.makeText(getActivity(), "NULL", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getActivity(), "NOT NULL " + file.getName(), Toast.LENGTH_LONG).show();
fis = new FileInputStream(file);
myParser.setInput(fis, null);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
@Override
protected String doInBackground(Void... params) {
int event = 0;
try {
event = myParser.getEventType();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
while (event != XmlPullParser.END_DOCUMENT) {
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if(name.equals("from")){
value = myParser.getAttributeValue(null, "value"); // this line always return null
Log.d(getTag(), "NEZINAU " + value);
}
break;
}
try {
event = myParser.next();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
Log.d(getTag(), "BAD " + e.getLocalizedMessage());
}
}
return value;
}
@Override
protected void onPostExecute(String aVoid) {
super.onPostExecute(aVoid);
System.out.println("myEND " + aVoid);
Toast.makeText(getActivity(), "THE END!!! " + value, Toast.LENGTH_LONG).show();
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
此行value = myParser.getAttributeValue(null, "value"); // this line always return null
总是返回null。为什么?
# 1 楼答案
必须使用XmlPullParser检索值。事件XmlPullParser上的getText()。文本 请参见以下示例: http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
试试这样:
# 2 楼答案
XML中的属性如下所示:
XML文档中的标记没有属性。您希望使用
xmlPullParser.getText()
来获取开始标记和结束标记之间的文本内容