[iPhone初级]IOS自带NSXMLParser对xml文件的解析
来源:互联网 发布:淘宝刷好评兼职交会费 编辑:程序博客网 时间:2024/05/29 13:43
很多人都知道利用第三方来解析xml文件,这里我们介绍一下如何利用IOS自带的NSXMLParser来进行xml解析
我们要解析的文件如下:
<?xml version="1.0" ?><theresponse> <status>OK</status> <pricing currency="USD" symbol="$"> <price class="items">24.00</price> <price class="shipping">6.00</price> <price class="tax">1.57</price> </pricing></theresponse>
利用NSXMLParser解析,我们需要在需要解析的类中加入NSXMLParserDelegate,这其中有三个比较重要的方法,一个是-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
这个方法主要是找到开始元素,例如我们要解析<status>,这里elementName就可以定位到status这里
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
这个方法解析的是中间的值<status>OK</status>这里的OK就是这里的值-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
最后一个方法就是定位到</status>这个节点,在这个节点我们就可以把我们解析出来的数据存入NSDictionary或是NSArray中去了
我们还是来看一下代码吧
ItemParser.h
#import <Foundation/Foundation.h>@interface ItemParser : NSXMLParser <NSXMLParserDelegate>@property (readonly) NSDictionary *itemData;@end
ItemParser.m
#import "ItemParser.h"@implementation ItemParser { NSMutableDictionary *_itemData; NSMutableDictionary *_attributesByElement; NSMutableString *_elementString;}-(NSDictionary *)itemData{ return [_itemData copy];}-(void)parserDidStartDocument:(NSXMLParser *)parser{ _itemData = [[NSMutableDictionary alloc] init]; _attributesByElement = [[NSMutableDictionary alloc] init]; _elementString = [[NSMutableString alloc] init];}-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ // Save the attributes for later. if (attributeDict) [_attributesByElement setObject:attributeDict forKey:elementName]; // Make sure the elementString is blank and ready to find characters [_elementString setString:@""];}-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ // Save foundCharacters for later [_elementString appendString:string];}-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"status"]){ // Element status only contains a string i.e. "OK" // Simply set a copy of the element value string in the itemData dictionary [_itemData setObject:[_elementString copy] forKey:elementName]; } else if ([elementName isEqualToString:@"pricing"]) { // Pricing has an interesting attributes dictionary // So copy the entries to the item data NSDictionary *attributes = [_attributesByElement objectForKey:@"pricing"]; [_itemData addEntriesFromDictionary:attributes]; } else if ([elementName isEqualToString:@"price"]) { // The element price occurs multiple times. // The meaningful designation occurs in the "class" attribute. NSString *class = [[_attributesByElement objectForKey:elementName] objectForKey:@"class"]; if (class) [_itemData setObject:[_elementString copy] forKey:class]; } [_attributesByElement removeObjectForKey:elementName]; [_elementString setString:@""];}-(void)parserDidEndDocument:(NSXMLParser *)parser{ _attributesByElement = nil; _elementString = nil;}-(void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError{ NSLog(@"%@ with error %@",NSStringFromSelector(_cmd),parseError.localizedDescription);}-(BOOL)parse{ self.delegate = self; return [super parse];}@end
这里解析后的结果:{ currency = USD; items = "24.00"; shipping = "6.00"; status = OK; symbol = "$"; tax = "1.57";}
好了,解析完毕,这里的还有一个重点就是copy,希望各位同学能多注意每个变量的记数。我自己也是JAVA做习惯了,过早释放,老是取不到值。呵呵,谨记。
- [iPhone初级]IOS自带NSXMLParser对xml文件的解析
- [iPhone初级]IOS自带NSXMLParser对xml文件的解析
- iphone NSXMLParser解析xml文件
- iPhone开发 NSXMLParser解析xml文件
- iphone开发 NSXMLParser解析xml文件
- iOS之NSXMLParser对XML解析
- ios-使用NSXMLParser解析XML文件
- iOS XML解析 - NSXMLParser
- [iPhone]XML文件解析 parsing-xml-files NSXMLParser
- 【IOS中XML解析】NSXMLParser方法解析XML文件案例
- IPhone之NSXMLParser的使用----xml解析流程小结
- 【ios】通过NSXMLParser解析xml
- ios NSXmlparser方法 XML解析
- IOS内置NSXMLParser解析xml
- iOS-XML文档解析(NSXMLParser)
- 使用NSXMLParser解析xml文件
- 使用NSXMLParser解析xml文件
- IOS开发之—xml文件解析(NSXMLParser类)
- 15周任务3
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
- QT 设置程序界面风格
- java study 001
- PHP的生命周期
- [iPhone初级]IOS自带NSXMLParser对xml文件的解析
- 理解Python的双下划线命名(转过来慢慢理解)
- :system.form_status
- 第十五周任务三
- pdf 或office文件转换成html5的方法
- 一些必不可少的Sublime Text 2插件
- ios 资源
- Vcard 标准格式
- php性能分析工具——XHProf