我正在解析格式为:
的XML文件**注意:这是XML的一个非常简化的版本。共有11个部门,总共87个部门
<division>
<name> Sciences </name>
<departments>
<department>
<name> Computer Science </name>
</department>
<department>
<name> Biology </name>
</department>
<department>
<name> Chemistry </name>
</department>
</department>
</division>
我希望做的是在UITableView中显示此信息,其中分区名称为Sections,每个相应部分中的部门名称。
我有一个名为divisionDict的NSDictionary,我想为每个分区存储NSArrays;包含部门。我还有一个名为departmentArray的NSMutableArray,它包含每个部门。基本上,我想要一个用departmentArrays填充的divisionDict。
这是我解析XML的代码,它完美无缺,我只是在字典中存储单独的数组时遇到了麻烦。当它现在通过解析时,我尝试用关键的“科学”打印出数组中的元素,它会打印每个部门的部门,而不仅仅是科学。
if(node_divisions)
{
node_division = [TBXML childElementNamed:@"division" parentElement:node_divisions];
while (node_division)
{
node_divisionName = [TBXML childElementNamed:@"name" parentElement:node_division];];
node_departments = [TBXML childElementNamed:@"departments" parentElement:node_division];
node_department = [TBXML childElementNamed:@"department" parentElement:node_departments];
divisionName = [TBXML textForElement:node_divisionName];
while(node_department)
{
node_departmentName = [TBXML childElementNamed:@"name" parentElement:node_department];
departmentName = [TBXML textForElement:node_departmentName];
//add the department name to the array
[departmentArray addObject:departmentName];
node_department = node_department->nextSibling;
}
//add the departmentArray to the dictionary, using the division name as the key
[divisionDict setObject:departmentArray forKey:divisionName];;
node_division = node_division->nextSibling;
}
}
非常感谢任何帮助!我知道它很简单我可能会遗漏,但我现在已经看了太多时间而且我看不到它。如果您需要任何其他信息,请告诉我,我试着详细解释一切。
此外,这是一张希望有助于展示我想要描述的内容的图片: http://i.stack.imgur.com/a9nSb.png
答案 0 :(得分:2)
看起来您正在将每个部门的所有部门添加到同一个阵列中。我想你只需要为循环中的每个分区创建一个新数组:
while (node_division)
{
departmentArray = [NSMutableArray array]; //add this line