WEB开发网
开发学院手机开发iPhone 开发 iPhone 两种常用的XML解析方式(NSXMLParser & GDa... 阅读

iPhone 两种常用的XML解析方式(NSXMLParser & GDataXMLNode)

 2010-09-06 08:03:00 来源:WEB开发网   
核心提示:[currentString setString:[currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];}- (void)parser:(NSXMLParser *)parse

[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++) {

Tags:iPhone 常用 XML

编辑录入:coldstar [复制链接] [打 印]
赞助商链接