MyException - 我的异常网
当前位置:我的异常网» Iphone » 请问xml解析有关问题

请问xml解析有关问题

www.MyException.Cn  网友分享于:2013-03-20  浏览:1次
请教xml解析问题

<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 ???????
iphone开发 xml解析

------解决方案--------------------
.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的值,保存下来,在取内容时处理
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有