解析XML文件返回null

时间:2013-04-16 07:32:06

标签: android xml xml-parsing null xmlpullparser

我正在尝试使用XMLPullParser解析XML文件。我的代码如下:

try {
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    XmlPullParser xpp = factory.newPullParser();

    xpp.setInput(new StringReader(iData));
    int eventType = xpp.getEventType();
    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_TAG) {
            if (xpp.getName() == "service") {
                sDetails[0] = xpp.getAttributeValue(1);
            }
            if (xpp.getName() == "username") {
            sDetails[1] = xpp.nextText();
            }
            if (xpp.getName() == "quota") {
            sDetails[2] = xpp.nextText();
            }
            if (xpp.getName() == "plan") {
            sDetails[5] = xpp.nextText();
            }
            if (xpp.getName() == "carrier") {
            sDetails[4] = xpp.nextText();
            }
            if (xpp.getName() == "speed") {
            sDetails[3] = xpp.nextText();
            }
            if (xpp.getName() == "usage-rating") {
            sDetails[6] = xpp.nextText();
            }
            if (xpp.getName() == "rollover") {
            sDetails[7] = xpp.nextText();
            }
            if (xpp.getName() == "excess-charged") {
            sDetails[10] = xpp.nextText();
            }
            if (xpp.getName() == "excess-shaped") {
            sDetails[11] = xpp.nextText();
            }
            if (xpp.getName() == "excess-restricted") {
            sDetails[12] = xpp.nextText();
            }
            if (xpp.getName() == "plan-interval") {
            sDetails[8] = xpp.nextText();
            }
            if (xpp.getName() == "plan-cost") {
            sDetails[9] = xpp.nextText();
            }
        }
        eventType = xpp.next();
    }
    String t = "";
    for (int i = 0; i < sDetails.length; i++) {
        t = t + sDetails[i] + ",";
    }
    return t;
} catch (Exception e) {
    e.printStackTrace();
}

但是,当我打印返回的值时。我得到的只是:

null,null,null,null,...,null,null, (13 Times)

我错过了什么吗?我正在读取的XML文件被返回(我知道,因为我可以打印它)。 iData是包含XML文件的字符串。我正在使用的方法适用于来自同一位置的另一个XML文件,但IF中的WHILE语句除外。有关为何返回null的任何建议。

1 个答案:

答案 0 :(得分:0)

没关系。我解决了您无法使用==比较字符串。我将==更改为...getName().equals("blahblah")并且有效。