所以,我很菜鸟,我正在尝试解析 this xml获取意大利电视节目列表。 但是当我使用 myParser.getText 时,它将返回 null。 我实际上进入了节点,但它不会从中获得任何值(value)。
public void parseXMLAndStoreIt(XmlPullParser myParser) {
int event;
String text=null;
try {
event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
String name=myParser.getName();
switch (event){
case XmlPullParser.START_TAG:
if(name.equals("display-name")){
channel = myParser.getText();
Log.d(name+" -->",myParser.getText());
}
else if(name.equals("programme")){
hour = myParser.getAttributeValue(null,"start");
Log.d(name+" -->",hour);
}
else if(name.equals("title")){
programme = myParser.getText();
Log.d(name+" -->",myParser.getText());
}
else if(name.equals("desc")){
description = myParser.getText();
Log.d(name+" -->",myParser.getText());
}
else {}
break;
case XmlPullParser.END_TAG:
}
event = myParser.next();
}
parsingComplete = false;
}
catch (Exception e) {
e.printStackTrace();
}
}
现在我的日志不会返回任何内容,因为 myParser.getText 为空,但如果我只打印名称,它实际上会返回节点。 getAttributeValue 有效,但在这种情况下我需要它
else if(name.equals("programme")){
hour = myParser.getAttributeValue(null,"start");
Log.d(name+" -->",hour);
最佳答案
我假设您声明的变量 channel, hour, programme, description
是类变量?我看不到这些声明在哪里,但想确定一下。
至于 getText()
我认为你需要在 TEXT
事件中实际使用它,而不是 START_TAG
getText
在 API 级别 1 中添加 String getText()
以字符串形式返回当前事件的文本内容。值(value) 返回取决于当前事件类型,例如对于 TEXT 事件它 是元素内容(这是使用 next() 时的典型情况)。看 description of nextToken() 对可能的详细描述 不同类型事件的返回值。
https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getText()
关于android - myParser.getText 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37683398/