做XML解析,list的add总是只有最后一个结果,解析的结果也有问题

nancymcguire 2015-02-23 11:19:21
哎。xml是一个数据库,自己做的比较简单,如下:
<pma_xml_export xmlns:pma="http://www.phpmyadmin.net/some_doc_url/" version="1.0">
<!--
- Structure schemas
-->
<pma:structure_schemas>
<pma:database name="test" collation="latin1_swedish_ci" charset="latin1">
<pma:table name="light">
CREATE TABLE `light` ( `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `light` int(11) NOT NULL, UNIQUE KEY `time` (`time`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
</pma:table>
</pma:database>
</pma:structure_schemas>
<!--
- 数据库: 'test'
-->
<database name="test">
<!-- 表 light -->
<table name="light">
<column name="time">2015-02-13 00:00:00</column>
<column name="light">13</column>
</table>
<table name="light">
<column name="time">2015-02-14 00:00:00</column>
<column name="light">14</column>
</table>
</database>
</pma_xml_export>


XML解析是在网上摘了一段,做了些修改:
public static List<weatherInfo> getPersons(String buffer) throws IOException{  
List<weatherInfo> infos = null;
weatherInfo info = null;
XmlPullParser pullParser = Xml.newPullParser();
try {
pullParser.setInput(tInputStringStream,"UTF-8");
int event = pullParser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
infos = new ArrayList<weatherInfo>();
break;
case XmlPullParser.START_TAG:

if("table".equals(pullParser.getName())){
info = new weatherInfo();
}
if("column".equals(pullParser.getName())){
String att=pullParser.getAttributeValue(0);
if("time".equals(att)){
String time = pullParser.nextText();
Log.d("io","light:"+time);
info.setTime(time);
}
else if("light".equals(att)){
String light = pullParser.nextText();
Log.d("io","light:"+light);
info.setLight(light);
}
}
break;
case XmlPullParser.END_TAG:
if("table".equals(pullParser.getName())){
infos.add(info);
Log.d("io","info"+info.light);
info = null;
}
break;
}
event = pullParser.next();
}
}
catch (XmlPullParserException e) {
e.printStackTrace();
}
for (int i=0;i<infos.size();i++)
{
System.out.println("test"+ infos.get(i).getLight());
}
return infos;
}
}




然后结果就是这样的:



求救啊,我是安卓新人,这个问题不太懂。。网上说的new要在循环体内部,我觉得我是在内部的吧,,哎。。
...全文
149 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nancymcguire 2015-02-23
  • 打赏
  • 举报
回复
解析的结果为什么xml读了两遍? 正常输出应该是一个13,一个14,这里输出三个14又是为什么呢?

62,614

社区成员

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

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