//创建可变字符串来接收内容
mutableString =[[NSMutableString alloc] init];
mutableArray =[[NSMutableArray alloc] initWithCapacity:0];
NSURL *url =[NSURL URLWithString:@""];
NSURLRequest *request =[NSURLRequest requestWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//初始化XML解析对象 把要解析的数据传进去
NSXMLParser *parser =[[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
//开始解析
[parser parse];
//解析开始
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"解析开始");
}
//遇到开始标签
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"hero"])
{
model =[[HeroModel alloc] init];
}
[mutableString setString:@""];
//NSLog(@"遇到开始标签%@",elementName);
}
//遇到内容(如果内容比较大 那么会调用多次此方法 必须要用可变字符串来接收每次返回的字符)
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
//NSLog(@"遇到内容%@",string);
//保证数据完整性
[mutableString appendString:string];
}
//遇到结束标签
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"name"])
{
model.name = mutableString;
}
if ([elementName isEqualToString:@"hero"])
{
[mutableArray addObject:model];
[model release];
}
//NSLog(@"遇到结束标签%@",elementName);
}
//解析结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"解析结束");
NSLog(@"~~~~~~%d",[mutableArray count]);
}
XML 解析
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- XML数据解析 XML数据解析是将数据文档解析成不同的格式,XML现在已经成为一种通用的数据交换格式,它具有平台无...
- 之前想写一个JAXB解析xml与实体类转换的,但是发现JAXB有一定的局限性,有时,在解析非标准xml中的属性值时...
- Senior进阶 网络之数据解析之XML解析和JSON解析的用法 XML解析之SAX解析 XML解析之DOM解析 ...
- 在学习《锋利的jQuery》第六章,jquery与Ajax中 $.get()方法获取XML文档信息时遇到这样一个问...