大家好我正在使用NSXMLParser来解析一些xml数据。 我正在使用此数据构建树表示,以便为可向下钻取创建层次结构。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"exercises"]) {
//init tree
appDelegate.Tree = [NSMutableDictionary new];
appDelegate.Rows = [NSMutableArray new];
[appDelegate.Tree setObject:appDelegate.Rows forKey:@"Rows"];
...
现在如果正在读取我的xml中的元素menuitem,那么它将初始化并将theChildren添加到menu_item字典
if([elementName isEqualToString:@"menuitem"]) {
appDelegate.theChildren = [NSMutableArray new];
[appDelegate.menu_item setObject:appDelegate.theChildren forKey:@"Children"];
这一切都按计划进行。
然而,以下情况并非按照我希望的方式进行。 当我看到另一个标签(workout_mob)时,我想要填充孩子,这只发生在底部字典项目中。
http://img188.imageshack.us/img188/7052/picture4efx.png
if([elementName isEqualToString:@"workout_mob"]) {
appDelegate.work_out_mob = [NSMutableDictionary new];
[appDelegate.theChildren addObject:appDelegate.work_out_mob];
有没有人知道为什么它至少不能填充我的两个项目我的意思是它将Children数组添加到他们两个中,所以为什么只剩下最后一个。如果我在我的xml代码中添加另一个xmlline,如下所示:
<menu_mob>
<menuitem id="1" text="Press this for exercises" pic="workout" />
<menuitem id="2" text="VirtuaGym online" pic="online" />
*<menuitem id="3" text="the Added Line" pic="online" />*
</menu_mob>
然后它会将所有Children项添加到底部menuitem(想象另一个字典项(3))。 那为什么呢?
答案 0 :(得分:0)
MMm似乎我正在重置我的阵列;)所以问题解决了。