请教xml解析问题

xiaoyangka 2013-03-12 11:17:36

<Directory id="1" parentid="0">第一级</Directory>
<Directory id="2" parentid="0">第二级
<Directory id="110" parentid="2">第二级子级一</Directory>
<Directory id="111" parentid="2">第二级子级二</Directory>
<Directory id="112" parentid="2">第二级子级三</Directory>
</Directory>
<Directory id="3" parentid="0">第三级</Directory>
<Directory id="4" parentid="0">第四级
<Directory id="113" parentid="4">第四级子级一</Directory>
<Directory id="114" parentid="4">第四级子级二</Directory>
<Directory id="115" parentid="4">第四级子级三</Directory>
</Directory>


哪位高手能给指点一下这种类型的xml怎么解析成NSMutableArray ???????
...全文
196 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyangka 2013-03-14
  • 打赏
  • 举报
回复
ok 搞定了 非常感谢楼上
xiaoyangka 2013-03-12
  • 打赏
  • 举报
回复
解析出来后NSMutableArray中的每一项都是一个Array,这个array中包含id,parentid,title三项
zhang3652 2013-03-12
  • 打赏
  • 举报
回复
.h @interface ReadXml : NSObject<NSXMLParserDelegate>{NSXMLParser *xmlRead;...... .m - (void)initProgram; { NSString *path = [[NSBundle mainBundle] pathForResource: @"xxxx" ofType: @"xml"]; //得到xml文件路径 NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath: path]; NSData *data = [file readDataToEndOfFile];//得到xml文件 //读取到NSDate中 xmlRead = [[NSXMLParser alloc] initWithData: data];//初始化NSXMLParser对象 [xmlRead setDelegate: self];//设置NSXMLParser对象的解析方法代理 [xmlRead parse];//调用代理解析NSXMLParser对象 } //解析器,从两个结点之间读取内容 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 解析到内容时会调用这个。比如<Directory id="1" parentid="0">第一级</Directory>的第一级就是string的内容 在这里吧内容和最后那个函数中取到的值一起保存,就是你要的一个数组 } //获得结点结尾的值 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 在这里判断什么时候结束了。你举例的这个无法判断,如果就这样估计你要用时间判断,多长时间没有调用这个方法就认为解析完成了。或者在头尾加个 <data> </data> 然后 if ([elementName isEqualToString:@"data"]) NSLog(@"%@",@"解析完成"); } //获得结点头的值 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 每个节点头都会调用这里如(<Directory)。在这里取头里的值,例如 [attributeDict objectForKey:@"parentid"]; 得到parentid的值,保存下来,在取内容时处理 }
xiaoyangka 2013-03-12
  • 打赏
  • 举报
回复
恩 想通过tableview做树形目录
wallier 2013-03-12
  • 打赏
  • 举报
回复
xml无限分类?
wallier 2013-03-12
  • 打赏
  • 举报
回复
哈哈,是不是太短了
xiaoyangka 2013-03-12
  • 打赏
  • 举报
回复
我刚接触ios开发,有人在吗?

29,031

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧