ios xml解析

iosxml解析框架有
GDataXML:是基于DOM模式的解析库,由Google开发,可以读写XML文档,支持XPath查询。
TinyXML:是基于C++言的DOM模式解析库,可以读写XML文档,不持XPath。
KissXML :基于DOM模式的解析库,基于TouchXML,主要的不同是可以写入XML文档。
TouchXML:是基于DOM模式的解析库。与TBXML类,能读取XML文档,不能写XML文档。
TBXML:是级的DOM模式解析库,不持XML文档和XPath,能读取XML文档,不能写XML文档,是解析XML是最快的。

NSXML解析是ios自带的,采用的是SAX模式解析,NSXML框架的核心是NSXMLParser和它的委托协议NSXMLParserDelegate。
1、初始化
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
2、NSXML常用的五个方法
//文档开始的时候触发
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@”parserDidStartDocument”);
_notes = [NSMutableArray new];
_tempDict = [[NSMutableDictionary alloc] init];
}
- (void)parser:(NSXMLParser )parser parseErrorOccurred:(NSError )parseError
{
NSLog(@”%@”,parseError);
}
/* 当解析器对象遇到xml的开始标记时,调用这个方法开始解析该节点 */
- (void)parser:(NSXMLParser )parser didStartElement:(NSString )elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
NSLog(@”didStartElement”);
}
/* 当解析器找到开始标记和结束标记之间的字符时,调用这个方法解析当前节点的所有字符 */
- (void)parser:(NSXMLParser )parser foundCharacters:(NSString )string
{
if(self.tempString == nil)
self.tempString = [[NSMutableString alloc] init];
[self.tempString appendString:string];

NSLog(@"foundCharacters string = %@",string);

}
/* 当解析器对象遇到xml的结束标记时,调用这个方法完成解析该节点 */
- (void)parser:(NSXMLParser )parser didEndElement:(NSString )elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
NSLog(@”didEndElement = %@ namespaceURI = %@”,elementName,namespaceURI);
// self.currentTagName = nil;

if([elementName isEqualToString:@"prepay_id"])
{
    [_tempDict setObject:self.tempString forKey:@"prepay_id"];
}
else if([elementName isEqualToString:@"sign"])
{
    [_tempDict setObject:self.tempString forKey:@"sign"];
}
else if([elementName isEqualToString:@"return_code"])
{
    [_tempDict setObject:self.tempString forKey:@"return_code"];
}
else if([elementName isEqualToString:@"appid"])
{
    [_tempDict setObject:self.tempString forKey:@"appid"];
}
else if([elementName isEqualToString:@"nonce_str"])
{
    [_tempDict setObject:self.tempString forKey:@"nonce_str"];
}
else if([elementName isEqualToString:@"result_code"])
{
    [_tempDict setObject:self.tempString forKey:@"result_code"];
}  else if([elementName isEqualToString:@"mch_id"])
{
    [_tempDict setObject:self.tempString forKey:@"mch_id"];
}
else {

}
self.tempString = nil;

}
/* 解析xml文件结束 */
- (void)parserDidEndDocument:(NSXMLParser *)parser
{

NSLog(@"_tempDict = %@",_tempDict);
_prepayid = [_tempDict objectForKey:@"prepay_id"];
    self.notes = nil;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值