XML解析2种方式,一种是有效的,一种不是android

时间:2012-04-30 04:58:12

标签: android xml

所以,我的问题是:

我正在处理XML文件,有些是在应用程序本身的bin文件夹中,有些是存储在SD卡上的,因为它们是用户生成的。我使用相同的代码解析这两个,但是当我从SD卡解析时,它给了我错误,但不是来自另一个。以下是我为每个人使用的代码:

从bin获取文件:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setValidating(false);
        XmlPullParser myxml = context.getApplicationContext().getResources().getXml(data);

和sd:

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setValidating(false);
        XmlPullParser myxml = factory.newPullParser();
        File file = new File(Environment.getExternalStorageDirectory()+"/Platformer/level12.xml");
        FileInputStream fis = new FileInputStream(file);

        myxml.setInput(new InputStreamReader(fis));

其他一切都是一样的,我将在下面展示:

int eventType = myxml.getEventType();
        String currentTag = "";
        while(eventType != XmlPullParser.END_DOCUMENT)
        {
            if(eventType == XmlPullParser.START_TAG) {
                currentTag = myxml.getName();
            }
            else if(eventType == XmlPullParser.TEXT) {
                if(currentTag.equalsIgnoreCase("height"))
                {
                    height = Integer.parseInt(myxml.getText());
                }
                else if(currentTag.equalsIgnoreCase("width"))
                {
                    width = Integer.parseInt(myxml.getText());
                }
                else if(currentTag.equalsIgnoreCase("level"))
                {
                    levelData = myxml.getText();
                    levelData = levelData.replace("\n", "");
                }
                else if(currentTag.equalsIgnoreCase("water"))
                {
                    waterData = myxml.getText();
                    waterData = waterData.replace("\n", "");
                }
            }
            eventType = myxml.next();
        }

所以,我不确定为什么,但是当它到达高度部分时,它告诉我它不是一个int,当我打印正在检查的内容时,它会显示一个它正在尝试解析为的换行符一个int。这是由于读入xml的方式吗?有什么办法可以解决这个问题吗?谢谢,如果你还需要什么,我会发布它。

威尔

0 个答案:

没有答案