0

大家好,我正在使用 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>

然后它将所有子项添加到底部菜单项(想象另一个字典项(3))。所以为什么 ?

4

1 回答 1

0

嗯,看来我正在重置我的数组;)所以问题解决了。

于 2009-09-08T10:54:04.770 回答