【发布时间】:2013-07-19 10:26:05
【问题描述】:
我正在尝试解析应用程序委托 didFinishLaunchingWithOptions: 方法上的 xml 提要:
//Parse XML Data
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://xxxxxxxxxxxxxxxxx/xml"]];//url is just fine :)
[xmlParser setDelegate:self];
BOOL parseState = [xmlParser parse];
if (parseState) {
NSLog(@"parse succeeded");
}else{
NSLog(@"parse failed");//Always parse failed, parse is always "NO"
}
委托协议方法(没有被调用):
#pragma mark - NSXMLParserDelegate
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
NSLog(@"parser:didStartElement:namespaceURI:qualifiedName:attributes:");
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"parser:foundCharacters:");
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
NSLog(@"parser:didEndElement:namespaceURI:qualifiedName:");
}
当然,AppDelegate.h 符合NSXMLParserDelegate 协议:
@interface AppDelegate : UIResponder <UIApplicationDelegate,NSXMLParserDelegate>
我错过了什么?为什么不调用协议方法以及为什么[xmlParser parse] 总是返回NO?谢谢。
【问题讨论】:
-
实现
parser:parseErrorOccurred:委托方法,看看错误是什么。 -
嗨 rmaddy,我用了那个委托方法,参数
parseError的代码是5,字典是空的。 -
您是否 100% 确定 XML 文档格式正确?解析 XML 时的错误代码 5 是
NSXMLParserPrematureDocumentEndError。您能否创建一个NSURLConnection以使用sendSynchronousRequest:从同一URL 下载文件,并将响应打印到控制台?
标签: ios nsxmlparser nsxmlparserdelegate