XML解析
XML文档格式如下: <?xml version = "1.0" encoding = "UTF-8"?>//元素 <book> <name>Xml应用系列教程</name> <auhtor>学路的小孩</auhtor> <date>2009-03-23</date> </book> JSON和XML表示同一个文件时,JSON的体积更小. XML解析有2种大类: 1.DOM:将整个XML文件一口气加载到内存中,合适解析小文件,可以随意访问元素 2.SAX:从根元素开始加载,按顺序一个一个元素往下解析,适合大文件,不能往回退访问之前的元素 iOS中解析XML有几种方式: 1.NSXMLParser:SAX,苹果SDK自带的 2.libxml2:纯C语言的,同时支持DOM和SAX 3.GDataXML:DOM,google开发,基于libxml2 解析方式的选择: 1.大文件:NSXMLParser/libxml2 2.小文件:GDataXML 1>使用NSXMLParser方法: 代理方式:调用<NSXMLParserDelegate> - (void)XMLParserWithData:(NSData *)data { //创建解析器 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; //设置解析器代理 parser.delegate = self; #warning mark 同步解析 //开始解析 [parser parse]; }代理方法: #pragma mark -NSXMLParserDelegate //开始解析文档头部位置:<?xml version = "1.0" encoding = "UTF-8"?> - (void)parserDidStartDocument:(NSXMLParser *)parser { } //开始解析元素,每个元素开始解析的时候都会到这里 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { } //解析完毕元素 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { } //解析完毕文档 - (void)parserDidEndDocument:(NSXMLParser *)parser { } 2>GDataXML使用方法 需要配置环境: 2.1将GDataXML库包含进来 2.2将动态链接库libxml2.dylib加进来 2.3将动态链接库指向使用的头文件路径 在项目->Header search paths中增加/usr/include/libxml2 2.4在Other linker flags中进行连接 +"-lxml2" 2.5将GDataXMLNode.m设置为MRC 在项目->build phases -> 双击文件右侧加入"-fno-objc-arc" 可以开始用了: - (void)GDataXMLWithData:(NSData *)data { //1.加载文档 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; //2.获得根元素 GDataXMLElement *rootElement = doc.rootElement; //3.获取所有book的元素 NSArray *elements = [rootElement elementsForName:@"book"]; }--end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |