0

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」を確認してください。エラーが表示されます。

ココアエラー264

チェックします、それはNSFileReadUnknownStringEncodingErrorです

その後、次のように、ファイルに対してNSUTF8StringEncodingまたはNSUnicodeStringEncodingとしてエンコードを強制しようとしました。

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

しかし、成功しません。ファイルをロードできない、またはコンテンツのないファイルをロードできないため、Cocoaエラーが発生しました。

私を助けてください?

私は自分のファイルを次の場所に置きました:

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

4

1 に答える 1

0

タグ「content:encoded」のどこかに問題があります。次のコードを使用してください。

- (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);   
}
于 2012-11-03T10:30:13.633 に答える