在我的Android应用程序中,我尝试使用XMLPullParser使用以下代码读取xml文件:
while (eventType != XmlPullParser.END_DOCUMENT)
{
if (eventType == XmlPullParser.START_TAG)
{
s = xpp.getName();
if (xpp.getName().equalsIgnoreCase("container"))
{
state = stateContainer;
con = new Container();
con.setId(xpp.getAttributeValue(0));
con.setParentId(xpp.getAttributeValue(1));
con.setRestricted(xpp.getAttributeValue(2));
}
else if (xpp.getName().equalsIgnoreCase("title"))
{
state = stateTitle;
}
else
{
state = stateUnknown;
}
}
else if (eventType == XmlPullParser.TEXT)
{
s = xpp.getText();
if (state == stateTitle)
{
con.setTitle(s);
}
}
else if (eventType == XmlPullParser.END_TAG)
{
s = xpp.getText();
if (xpp.getText().equalsIgnoreCase("container"))
{
listAdapter.add(con);
}
}
eventType = xpp.next();
}
然而,它似乎跳进了'listAdapter.add(con);'当其他if语句中没有其他if子句为真时。例如:
else if (eventType == XmlPullParser.TEXT)
返回true
。然后它会尝试返回if (state == stateTitle)
的{{1}}。它应该跳转到false
,而是转到eventType == xpp.next();
,它嵌套在不同的if语句中。其他一些if语句也会发生这种情况。
我会说我在编程方面不是初学者,但我似乎无法解决这个问题的来源!
由于
答案 0 :(得分:2)
如果在调试时看到控制流的行为与您描述的一样,那么您执行的代码似乎与源不匹配。尝试进行干净和完全重建。