Java 带有XMLpullparser的NullPointerException

Java 带有XMLpullparser的NullPointerException,java,android,xml,xmlpullparser,Java,Android,Xml,Xmlpullparser,也许我没看到。我使用xpppullpullparser 这段代码启动XmlPullparser并从http流读取xml数据。这条流确实有效,我测试过了 字符串_text= try { // Startet den XML Leser XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); fac

也许我没看到。我使用xpppullpullparser

这段代码启动XmlPullparser并从http流读取xml数据。这条流确实有效,我测试过了

字符串_text=

            try {
                // Startet den XML Leser
                XmlPullParserFactory factory =    XmlPullParserFactory.newInstance();
                factory.setNamespaceAware(true);
                XmlPullParser xpp = factory.newPullParser();
                try {
                    // Startet die Connection, um XML Daten zu bekommen
                    URL _url = new URL(url[0]);
                    HttpURLConnection con = (HttpURLConnection) _url.openConnection();
                    _text = readStream(con.getInputStream());
                    // Setzt xml auf Input an
                    xpp.setInput(new StringReader(_text));
                    readXML(xpp);
现在是readXML函数。它应该将XML解析为weatherData对象。什么是weatherData并不重要,因为解析不起作用

private weatherData readXML(XmlPullParser xpp)
{
    weatherData _result = new weatherData();
    try {
        int _eventType = xpp.getEventType();
        String _name;

        while (_eventType != xpp.END_DOCUMENT) {
            _name = xpp.getName();
            if (_name == null)
            Log.i("i", "Tja, null...");
            if (_name.equals("city") && _eventType == xpp.START_TAG)
            {

                int _id = Integer.parseInt(xpp.getAttributeValue("", "id"));
                Log.i("_id", new Integer(_id).toString());

            }
            xpp.next();
            _eventType = xpp.getEventType();
        }
    }
    catch (Exception e)
    {
        Log.e("i", "exception: " + e.getMessage() + " " + e.getLocalizedMessage());
    }

return _result;
}

getName只给了我一个空字符串。有什么想法,为什么?

很难确定这里发生了什么,因为您没有发布正在解析的XML,也没有发布任何关于具体发生在哪里的附加信息


但是,当eventType等于XmlPullParser.TEXT时,XmlPullParser在getName上返回null是很自然的,这表示已读取字符数据,并且可以通过调用getText来使用字符数据。在本例中,您需要调用getText方法来获取XML标记的内容

从Logcat发布日志您可以发布xml吗?指向xml is日志的链接是03-08 12:41:41.208 19603-19760/com.test.wetter.wetterapp I/I﹕ Tja,空。。。03-08 12:41:41.209 19603-19760/com.test.wetter.wetterapp E/i﹕ 例外:nullhey到xml的链接是空的,它在德国失败了吗?如果是,那么这就是你的问题。您需要确保检查事件类型是什么,如果是文本,则需要调用getText来分配Country xml标记的内部值{int\u id=Integer.parseIntxpp.getAttributeValue,id;//Log.i\u id,new Integer\u id.toString;\u result.set\u id\u id;}现在将首先查看是否有普通标记。感谢您的提示。