В моем приложении для Android я пытаюсь прочитать XML-файл, используя XMLPullParser, используя следующий код:
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)
, который возвращает false
. Он должен перейти к eventType == xpp.next();
, но вместо этого перейти к listAdapter.add(con);
, который вложен в другой оператор if. Это также происходит с некоторыми другими операторами if.
Я бы сказал, что я не новичок, когда дело доходит до программирования, но я не могу понять, откуда эта проблема!
Спасибо