今天折磨了自己一晚上,重新换了一种XML解析方法——PULL解析。之前用SAX解析也感觉还行,就是有一个地方怎么都无解,搜索重名用户只能显示一个结果,本来也能用搜ID的方式将就,可我就是咽不下这口气,被一个程序欺负。
以前也尝试过PULL解析,无奈太多坑放弃了,今天下定决心一定要FIX这个BUG,功夫不负有心人,抽烟抽到肺痛之后,终于搞定了(抽烟有害健康啊)。
下面记录下我跳出的几个天坑。
1、每次循环之后一定要在开始TAG中重新初始化变量集合
case XmlPullParser.START_TAG:
//获取开始标签的名字
String startTagName = xmlPullParser.getName();
if ("User".equals(startTagName)) {
user=new User(); //这一步非常重要,要配合END_TAG使用
}
这里的重新初始化是为了配合末尾的END_TAG中的一个变量重置使用。
2、一次循环完成后要把变量集合置空,否则重新循环之后不会重新覆盖到变量中去
case XmlPullParser.END_TAG:
String value = xmlPullParser.getName();
if (value.equals("User") && user != null && userList != null) {
userList.add(user);
user = null; //将user置null,否则无法覆盖
}
break;
3、而且在将变量集添加到list中去时,必须要验证条件是否符合,否则同一变量集会添加多次
if (value.equals("User") && user != null && userList != null)
这一句可以防止出现重复添加的问题
这里附带一篇文章,专门介绍和讲解PULL解析的,写的很详细
http://blog.csdn.net/caesardadi/article/details/8626097
本来这个问题计划放在晚一点解决的,现在感觉开发过程很顺利,一切都超前了,希望明天开始公测的时候服务器要扛得住。1M小水管让我很害怕