交互数据解析之XML解析

常用的交互数据格式XML和JSON,此篇来说XML解析

XML解析的2种方式:

  1. DOM,一次将整个XML加载到内存,适合解析小文件
  2. SAX,从根元素开始,按顺序一个一个元素向下解析,适合解析大文件

常用的XML解析手段

  1. NSXMLParser(苹果自带的,使用SAX方式)
  2. 第三方框架,
    A:libxml2(包含在iOS SDK中),同时支持DOM和SAX解析
    B:GDadaXml: DOM 解析方式,Google基于libxml2开发

使用NSXMLParser解析

  1. 初始化解析器然后开始解析:
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:self.earthquakeData];

[parser setDelegate:self];
[parser parse];
  1. 解析过程的代理
@protocol NSXMLParserDelegate <NSObject>
@optional

// Document handling methods
- (void)parserDidStartDocument:(NSXMLParser *)parser;
    // sent when the parser begins parsing of the document.
- (void)parserDidEndDocument:(NSXMLParser *)parser;
    // sent when the parser has completed parsing. If this is encountered, the parse was successful.

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError;
    // ...and this reports a fatal error to the delegate. The parser will stop parsing.

- (void)parser:(NSXMLParser *)parser validationErrorOccurred:(NSError *)validationError;
    // If validation is on, this will report a fatal validation error to the delegate. The parser will stop parsing.
//更多代理方法请查看NSXMLParserDelegate

使用GDataXML 解析

  1. 先需要导入libxml2.2.dylib. 同时设置它为非arc模式。
  2. 通过请求获取XML Data后,开始解析
-(void)parseXMLData:(NSData *)data
 {
    //加载XML
    GDataXMLDocument *docXML=[[GDataXMLDocument alloc]initWithData:data options:0 error:nil];
    //获得根元素
    GDataXMLElement *root=docXML.rootElement;
    //获得所有的video元素
    NSArray *elements=[root elementsForName:@"video"];
    NSMutableArray *videos=[NSMutableArray array];
    for (GDataXMLElement *ele in elements)
    {
        //获取所有想要的信息
       id info = [ele attributeForName:XX];
        [videos addObject:info];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值