我正在为android编写一个应用程序,需要解析XML文件中的数据。我从来没有遇到像这样的错误,这是非常难以追查。或者,也许我的大脑停止工作。那个会发生。 XML文件的格式为:Android,空指针数据不为空的例外
<?xml version="1.0" encoding="iso-8859-1"?>
<memberRoster>
<agent>
<agentInfo1>...</agentInfo1>
<agentInfo2>...</agentInfo2>
...
</agent>
<agent>
...
</agent>
...
</memberRoster>
到目前为止,它的工作很好,除了好玩一些随机位!
现在然后它会抛出一个NullPointerException。我做了一些更深入的挖掘,发现有三个“代理”(800个中)和“假定”空数据。我检查了XML文件,数据在那里,没有非法字符等。每次都是同样的三个“代理”。该程序解析这些“空”“代理”之前和之后的其他条目。还值得注意的是,并非ArrayList中的所有“agentInfo”字段都为空;例如,其中一个条目有8个条目中的7个为空,第8个条目为非空,另一个条目只有一个空值,最后7个非空。
我从XML文件解析数据到一个ArrayList,就像我之前提到的,它工作得很好,直到它涉及到XML文件中的三个特定条目。
对不起,我不能提供比这更多的信息,数据是敏感的我们的成员。
编辑:
对不起!我知道我忘记了一些东西! :)
从我XMLHandler.java类的某些代码:
public void characters(char[] ch, int start, int length)
if(this.in_mr_agentNrdsId) {
agent[0] = ch.toString();
}
else if(this.in_mr_agentFirstName) {
agent[1] = ch.toString();
}
else if(this.in_mr_agentLastName) {
agent[2] = ch.toString();
}
else if(this.in_mr_agentPhone) {
agent[3] = ch.toString();
}
else if(this.in_mr_agentEmail) {
agent[4] = ch.toString();
}
else if(this.in_mr_agentOfficeName) {
agent[5] = ch.toString();
}
else if(this.in_mr_agentOfficePhone) {
agent[6] = ch.toString();
}
else if(this.in_mr_agentType) {
agent[7] = ch.toString();
pds.setMemberRoster(agent);
agent = new String[8];
}
PDS是类型ParsedDataSet的对象,这是一个仅仅包含ArrayList的对象和一些getter和setter的简单类方法:
public class ParsedDataSet { private ArrayList agentOpenHouses = new ArrayList(); private ArrayList calendarOfEvents = new ArrayList(); private ArrayList latestStatistics = new ArrayList(); private ArrayList memberRoster = new ArrayList();
public ArrayList<String[]> getAgentOpenHouses() {
return agentOpenHouses;
}
public ArrayList<String[]> getCalendarOfEvents() {
return calendarOfEvents;
}
public ArrayList<String[]> getLatestStatistics() {
return latestStatistics;
}
public ArrayList<String[]> getMemberRoster() {
return memberRoster;
}
public void setAgentOpenHouses(String[] agentOpenHousesItem) {
this.agentOpenHouses.add(agentOpenHousesItem);
}
public void setCalendarOfEvents(String[] calendarOfEventsItem) {
this.calendarOfEvents.add(calendarOfEventsItem);
}
public void setLatestStatistics(String[] latestStatisticsItem) {
this.latestStatistics.add(latestStatisticsItem);
}
public void setMemberRoster(String[] memberRosterItem) {
this.memberRoster.add(memberRosterItem);
}
} // end class ParsedDataSet
发布一些代码,以便我们可以提供帮助。 – yogsma 2011-03-11 18:16:17
如果您发布用于检索和解析XML的代码,这将有所帮助 – Cameron 2011-03-11 18:17:40
您可以从LogCat中提供堆栈跟踪,也可能是违规的代码片段? – 2011-03-11 18:17:44