Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试解析XML时获取元素的null_Android_Xml - Fatal编程技术网

Android 尝试解析XML时获取元素的null

Android 尝试解析XML时获取元素的null,android,xml,Android,Xml,我有以下XML: <ex> <email> xredhatx@gmail.com </email> <login_status> TRUE </login_status> <category> Personal </category> <subcategory> Food

我有以下XML:

<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");