XML解析
前些日子,看到一个同学在问xml解析的问题,自己也对xml解析了解不是很多,都是用了jsno解析。别去学习了一下xml解析。 <weatherInfo city="北京"weather="晴"temp1="15"temp2="5">
</weatherInfo>
另一种实现方式: <weatherInfo>
<city>北京</city>
<weather>晴</weather>
<temp1>15</temp1>
<temp2>5</temp2>
</weatherInfo>
以上就是简单的xml的基本语法。下面开始说iOS中xml的解析的事。 //准备解析
-(void)parserDidStartDocument:(NSXMLParser *)parser;
//准备解析当前节点
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict;
//获取首尾节点间内容
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;
//解析完当前节点
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
//解析结束
-(void)parserDidEndDocument:(NSXMLParser *)parser;
简单介绍完代理后,进行写demo。 - (IBAction)onParse:(id)sender {
NSString *xmlStr1 = @"<info>James</info>";
NSData *xmlData = [xmlStr1 dataUsingEncoding:NSUTF8StringEncoding];
//初始化NSXMLParser,并遵循协议
NSXMLParser *xmlParaser = [[NSXMLParser alloc]initWithData:xmlData];
xmlParaser.delegate = self;
//开始解析
[xmlParaser parse];
}
//准备解析
-(void)parserDidStartDocument:(NSXMLParser *)parser{
_label.text = [_label.text stringByAppendingString:@"准备解析"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//准备解析当前节点
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
_label.text = [_label.text stringByAppendingString:@"准备解析当前节点"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//获取首尾节点间内容
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
_label.text = [_label.text stringByAppendingString:string];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//解析完当前节点
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
_label.text = [_label.text stringByAppendingString:@"解析完当前节点"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//解析结束
-(void)parserDidEndDocument:(NSXMLParser *)parser{
_label.text = _label.text = [_label.text stringByAppendingString:@"解析结束"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
@end
运行结果: 第二个例子:解析: - (IBAction)onParse:(id)sender {
// NSString *xmlStr1 = @"<info>James</info>";
NSString *xmlStr2 = @"<info name ="James"></info>";
NSData *xmlData = [xmlStr2 dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser *xmlParaser = [[NSXMLParser alloc]initWithData:xmlData];
xmlParaser.delegate = self;
[xmlParaser parse];
}
//准备解析
-(void)parserDidStartDocument:(NSXMLParser *)parser{
_label.text = [_label.text stringByAppendingString:@"准备解析"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//准备解析当前节点
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
_label.text = [_label.text stringByAppendingString:@"准备解析当前节点"];
_label.text = [_label.text stringByAppendingString:elementName];
_label.text = [_label.text stringByAppendingString:@"n"];
_label.text = [_label.text stringByAppendingString:[attributeDict objectForKey:@"name"]];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//获取首尾节点间内容
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
_label.text = [_label.text stringByAppendingString:@"获取首尾节点间内容"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//解析完当前节点
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
_label.text = [_label.text stringByAppendingString:@"解析完当前节点"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
//解析结束
-(void)parserDidEndDocument:(NSXMLParser *)parser{
_label.text = _label.text = [_label.text stringByAppendingString:@"解析结束"];
_label.text = [_label.text stringByAppendingString:@"n"];
}
@end
运行结果: 另一种的解析,可以使用GDataXML第三方进行解析。这里不再详细说。 最后总结: 以上就是xml的简单解析。再次感谢慕课网(http://www.imooc.com/)。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |