NSXMLPARSER和带有奇怪编码的XML



i不能解析xml文件

最初,我将解析器声明为:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"download.rss" withExtension:@"webintents"];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];

解析时,我遇到错误

NSXMLPARSERERRORDOMAIN错误9

我检查是NSXMLPARSERINVALIDCHARACTERERROR。

解析器通过多个标签运行并在标签上遇到错误。

然后,我将声明更改为迭代编码为:

NSError *errorOfStr = nil;
NSStringEncoding encoding;
NSString *xmlFeedStr = [NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"download.rss" withExtension:@"webintents"] usedEncoding:&encoding error:&errorOfStr];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[xmlFeedStr dataUsingEncoding:encoding allowLossyConversion:YES]];

但是,我在初始化变量" XMLFEEDSTR"时会遇到错误。检查" errorofstr",我看到eror:

可可错误264

我检查,是nsfilereadunknowningencodingerror

之后,我试图强制一些编码为NSUTF8STRINGENCODING或NSUNICODESTRINEDENCODENG,如下:

NSStringEncoding encoding = NSUnicodeStringEncoding;
NSString *xmlFeedStr = [NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"download.rss" withExtension:@"webintents"] encoding:encoding error:&error];

,但没有成功。我遇到了一些可可错误,因为不能加载没有内容的文件或加载文件。

请帮助我?

我将文件放在:

http://www.mediafire.com/download.php?yxfp3ch8n3ai4iq

标签"内容:编码"中的某个问题。请使用以下代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSLog(@"Application Did Finish Launching");
    NSString *dataString = [[[NSString alloc] initWithContentsOfFile:@"/Users/alex/Downloads/download.rss.webintents" encoding:NSASCIIStringEncoding error:nil] autorelease];
    NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
    [parser setDelegate:self];
    [parser parse];
    [parser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"Did Start Element: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    NSLog(@"Found Characters: %@", string);
}
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
    NSLog(@"Found CDATA: %@", someString);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    NSLog(@"Did End Element: %@", elementName);
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    NSLog(@"Parser Did End Document");
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
    NSLog(@"Parse Error Occurred: %@", parseError.description);   
}

最新更新