iPhone 两种常用的XML解析方式(NSXMLParser & GDataXMLNode)
2010-09-06 08:03:00 来源:WEB开发网[currentString setString:[currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"docTitle"]) {
[newsArray addObject:currentString];
}
[currentString release];
currentString = nil;
}
先说一下程序运行的流程,当parser初始化并执行parse语句时([parser parse]),程序会跳到代理方法里面走第一个代理方法。第一个代理方法会将整个xml遍历一遍,并识别xml里面的元素名称(elementName),在发现有我想找的信息(docTitle)时,创建一个数组用来存储这些信息,当然第一个代理还没开始存储信息。
接下来会走第二个代理,它会把第一个代理中我们相要找的信息存储在currentString中。其中我增加了一个对获取的字符串的处理语句 [currentString setString:[currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]],它可以将字符串开始的空格和换行附去掉(因为常会遇到xml文件格式不太标准的)。
最后是第三个代理方法,把我们获取的信息存储到数组中。
当然程序运行过程中这三步的顺序并不是这么严格的执行的,而且会反复的执行,但是大致的处理过程是这样的。
DOM解析方式之GDataXMLNode
GDataXMLNode是基于libxml2的第三方文件,功能比较强大。
NSError* error = nil;
NSString *documentStr = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.xxxx.com/x/xxx.xml"] encoding:NSUTF8StringEncoding error:&error];
GDataXMLDocument* XMLdocument = [[GDataXMLDocument alloc] initWithXMLString:documentStr options:0 error:&error];
[documentStr release];
GDataXMLElement* rootElement = [XMLdocument rootElement];
NSArray *newsArray = [rootElement elementsForName:@"docTitle"];
for (int i = 0; i < [newsArray count]; i++) {
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››iPhone版PPS走进生活 观赏体验媲美PC版
- ››XML 转成 数组对象
更多精彩
赞助商链接