gpt4 book ai didi

java - XmlPullParser getAttributeValue 总是返回 null

转载 作者:行者123 更新时间:2023-11-29 03:06:52 25 4
gpt4 key购买 nike

我正在尝试解析一个 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");//此行始终返回 null 始终返回 null。为什么?

最佳答案

XML 中的属性如下所示:

<Tag attribute="value">content</Tag>

您的 XML 文档中的标签没有属性。您想使用 xmlPullParser.getText() 获取开始和结束标记之间的文本内容。

关于java - XmlPullParser getAttributeValue 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com