ios xml解析

来源:互联网 发布:java shiro demo 编辑:程序博客网 时间:2024/06/05 02:05

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