我正在使用这个xml文件: http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppaidapplications/limit=10/xml
来自apple.com/rss的并使用经典代码来解析它......
第一件奇怪的事情,当我记录下来时:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"string : %@",string);
if (!currentElementValue) {
// init the ad hoc string with the value
currentElementValue = [[NSMutableString alloc] initWithString:string];
} else {
// append value to the ad hoc string
[currentElementValue appendString:string];
}
}
我得到了一些HTML元素!但是,当您查看页面代码时,FireFox会显示完整的XML文档!
然后......当我试图从任何标签中获取一些信息时,我在预期值之前添加了很多空格和换行元素......
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
// Check tag name
if ([elementName isEqualToString:@"title"]) {
NSString *trimmedString = [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[currentElementValue setString:trimmedString];
NSLog(@" title: %@",currentElementValue);
[app setAppName:currentElementValue];
}
// Check tag
if ([elementName isEqualToString:@"entry"]) {
[apps addObject:app];
// release user object
[app release];
app = nil;
}
[currentElementValue release];
currentElementValue = nil;
}
返回例如:
标题:
Angry Birds - Clickgamer.com
我已经将该解析器类与其他XML文件一起使用了它,但是现在使用Apple XML文件它没有...为什么?
答案 0 :(得分:2)
如果由于构造XML的方式在所需内容之前存在大量空格,则可以在使用之前对其进行修剪,
....
if ([elementName isEqualToString:@"title"]) {
NSString * trimmedString = [currentElementValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@" title: %@",trimmedString);
[app setAppName:trimmedString];
}
....
<小时/> 至于您关于
parser:foundCharacters:
的问题,the documentation
说明了这一点,
由解析器对象发送以提供它 委托用字符串表示 全部或部分角色 当前元素。
所以你不应该指望它打印整个XML。它会给你一些零碎的东西。