android解析xml文件求解

a8854152 2012-05-29 03:52:07
跪求大神,帮个忙,我有个XML文件是这样的,
<PersonInfoCache>
<pension>785.6</pension>
<basemonth>201201</basemonth>
<fund>198.4</fund>
<medical>196.4</medical>
<pension>785.6</pension>
<basemonth>201202</basemonth>
<fund>198.4</fund>
<medical>196.4</medical>
<pension>785.6</pension>
<basemonth>201203</basemonth>
<fund>198.4</fund>
<medical>196.4</medical>
<pension>785.6</pension>
<basemonth>201204</basemonth>
<fund>198.4</fund>
<medical>192.14</medical>
<pension>785.6</pension>
<basemonth>201205</basemonth>
<fund>198.4</fund>
<medical>192.14</medical>
</PersonInfoCache>
我是用pull解析器对它进行解析,我有个要求就是要求是每4个不同的元素,组成一个hashmap,然后再添加到List中,意识就是pension,basemonth,fund,medical添加到hashmap中,然后再把这个hashmap的添加到list。添加的就是pension,还有后面的那个785.6.我的代码是这样的
public static List<Map<String, Object>> getPersons(InputStream xml) throws Exception{
List<Map<String, Object>> list1=new ArrayList<Map<String,Object>>();
Map<String,Object> map=null;
XmlPullParser pullParser=Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");
int event=pullParser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if("pension".equals(pullParser.getName())){
map=new HashMap<String, Object>();
}
map.put(pullParser.getName(), pullParser.nextText());
break;
case XmlPullParser.END_TAG:
if("medical".equals(pullParser.getName())){
list1.add(map);
}
break;
}
event=pullParser.next();
}
return list1;
}
我真的是无语了啊,怎么检验都是错误,都是显示出问题,我找来找去怎么也弄不了,求大神帮我修改下代码,或者如果对代码还有问题可以加我QQ:675411753,我把其他代码再发过来,真心求啊,我把分都给你们,帮我解决了我把分全部送了。
...全文
974 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
KLJNIHAO 2015-02-13
  • 打赏
  • 举报
回复
你倒是把错误贴出来参考一下啊,傻啦吧唧
zhouyang1007 2012-07-04
  • 打赏
  • 举报
回复
用的解析的软件?
古布 2012-05-29
  • 打赏
  • 举报
回复
case XmlPullParser.START_TAG: 后面的判断没写全,还缺两个。LZ写。

不好用的话,把下面类似的代码放到 XmlPullParser.END_TAG:里试试
map = list1.get(0);
map.put(pullParser.getName(), pullParser.nextText());
a8854152 2012-05-29
  • 打赏
  • 举报
回复
哥们,好像不行啊,你那下面是不是...这里还少写了一些代码啊
古布 2012-05-29
  • 打赏
  • 举报
回复
按照LZ的代码修改了一部分。

public static List<Map<String, Object>> getPersons(InputStream xml)
throws Exception {
List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");
int event = pullParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if ("pension".equals(pullParser.getName())) {
//map = new HashMap<String, Object>();
if ( list1.size() == 0 ) {
list1.add(new HashMap<String, Object>());
}
map = list1.get(0);
map.put(pullParser.getName(), pullParser.nextText());

} else if ("medical".equals(pullParser.getName())) {
if ( list1.size() == 3 ) {
list1.add(new HashMap<String, Object>());
}
map = list1.get(3);
map.put(pullParser.getName(), pullParser.nextText());
}
...
break;
case XmlPullParser.END_TAG:

break;
}
event = pullParser.next();
}
return list1;
}
huage 2012-05-29
  • 打赏
  • 举报
回复
我对pull解析不是很了解,但是我想很有可能是你在new Map的时候出了问题,检查下逻辑吧,
a8854152 2012-05-29
  • 打赏
  • 举报
回复
能不能帮我看看是哪里有问题吗 ?我关键是代码写好了,不方便再修改用另外的解析了。
huage 2012-05-29
  • 打赏
  • 举报
回复
我只写了个sax解析的 Android 也有这个解析吧 ,可以去参考下我以前写的一个工具 看有帮助没有
http://topic.csdn.net/u/20120426/15/6d170c31-1f05-48da-92f2-86e8b2e3b226.html
a8854152 2012-05-29
  • 打赏
  • 举报
回复
在线等
a8854152 2012-05-29
  • 打赏
  • 举报
回复
大神帮忙啊啊啊啊啊

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧