Android 尝试解析XML时获取元素的null
我有以下XML:Android 尝试解析XML时获取元素的null,android,xml,Android,Xml,我有以下XML: <ex> <email> xredhatx@gmail.com </email> <login_status> TRUE </login_status> <category> Personal </category> <subcategory> Food
<ex>
<email>
xredhatx@gmail.com
</email>
<login_status>
TRUE
</login_status>
<category>
Personal
</category>
<subcategory>
Food
</subcategory>
<May>
50
</May>
</ex>
然而,当我打印电子邮件时,我总是得到空值,我在跟踪,但我无法确定哪里出了问题?有什么提示吗 您需要使用
getText
而不是getAttributeValue
:
email = myParser.getText();
System.out.println("emaildecrypt"+email);
这将返回当前标记中的文本,但请确保在案例XmlPullParser.text
(如您在注释中所述)中捕获文本,同时保留标记名,以便您知道自己在哪里:
int event;
String text = null;
try {
event = myParser.getEventType();
String name = ""
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_TAG:
name = myParser.getName();
break;
case XmlPullParser.TEXT:
if(name.equals("email")){
text = myParser.getText();
System.out.println("text"+text);
}
break;
case XmlPullParser.END_TAG:
break;
}
event = myParser.next();
}
// parsingComplete = false;
} catch (Exception e) {
e.printStackTrace();
}
getAttributeValue
将返回当前标记的属性值。
如果电子邮件标签定义为:
<email address="asd@asd.com">
Nope-all为null,但当我执行
case XmlPullParser.TEXT:TEXT=myParser.getText()时;System.out.println(“文本”+文本)代码>我得到值。是的,当然你是在检查标记末尾的文本!。添加文本大小写将修复它。您需要保留当前正在处理的标记的上下文,以便知道需要将文本值分配给哪个变量非常奇怪if(name.equals(“email”)){
如果我将此转换为XmlPullParser.TEXT
的话,我会得到一个空的名称,而我已经定义了名称。看看我编辑过的答案。使用名称将标记名称保留在标记开始处,并在文本案例中使用。唯一的问题是,它会循环两次,第一次我将电子邮件第二次循环为空并覆盖s上一个值。当前system.out结果为:05-26 14:54:03.977 22213-22263/exa.com.ex I/system.out﹕ emailxredhatx@gmail.com05-26 14:54:03.977 22213-22263/exa.com.ex I/System.out﹕ 电子邮件
<email address="asd@asd.com">
myParser.getAttributeValue(null,"address");