所以,我的问题是:
我正在处理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的方式吗?有什么办法可以解决这个问题吗?谢谢,如果你还需要什么,我会发布它。
威尔