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实用工具AppBox Pro使用教程大揭秘
- ››iphone4省电方法
- ››iphone 获取地址的详细信息
- ››iPhone 库的基本内存管理策略
- ››iPhone加密文字亲手做 私密信息有保障
- ››iphone 根据经纬度坐标取详细地址(包括国,省,市...
- ››iphone/ipad ios cocoa object-c 近期苹果UI部分小...
- ››iphone中如何进行多线程编程
- ››iPhone OS SDK的这些事[安装、下载、版本、实例、...
- ››iPhone ObjectC的NSAutoreleasePool
- ››iPhone 判断设备是在Portrait(纵向)还是(Landscap...
赞助商链接