如题:android SAX解析,前一个节点的值覆盖了后一个节点的值。
XML文件如下:
<home>
  <state>1</ state>
  <message>发表评论成功</message>
  ......
</home>在SAX解析类里:在characters()方法中
System.out.println("curString"+curString);
if(curString!=null&&curTag.equalsIgnoreCase("state")){
commentlist.setState(curString) ;
}else if(curString!=null&&curTag.equalsIgnoreCase("message")){
commentlist.setMessage(curString);
System.out.println(getCommentList().getMessage().toString()+"在characters方法里");
}
但是我在endElement方法里打印
 System.out.println(getCommentList().getState().toString()+"在handlerdefault方法里");输入来的值却是:
11-28 04:42:06.216: I/System.out(1025): curString1
11-28 04:42:06.216: I/System.out(1025): 1在handlerdefault方法里
11-28 04:42:06.236: I/System.out(1025): curString获取商品评论列表成功
11-28 04:42:06.236: I/System.out(1025): 获取商品评论列表成功在characteers方法里
11-28 04:42:06.236: I/System.out(1025): 1在handlerdefault方法里
11-28 04:42:06.256: I/System.out(1025): 1在handlerdefault方法里我在在characters()方法中打印message节点时,它的值都已经设定好了,为什么却在endElement方法中
message节点的信息被state节点的信息覆盖了,请哪位大哥,帮我一下,我弄了两天了,都没有弄好,真的很急,谢谢了   

解决方案 »

  1.   

    下次代码要贴全,别人怎么知道你commentlist是什么又是怎么声明的,还会有getCommentList()这个方法。
    输出语句也不写,我都靠猜呢。
    从经验上来讲你的xml就应该改一下,如:
    <home>
    <comment>
       <state>1</ state>
       <message>发表评论成功</message>
    </comment>
    ......
    </home>
    解析时声明一个List装Comment,每个comment节点就new一个Comment,然后在下面的节点赋值,
    最后加到List里面,输出时遍历这个List就行了
      

  2.   

      你代码根本看不出来是怎么解析的所以不敢乱说   但是我大胆的猜测你很有可能是把 list集合对象给写到循环里面创建了。 这样每次循环解析都是一个新的对象  所以你的数据就出现了你说的被覆盖的情况 你自己检查下吧