0

NSXmlParser を使用して ISO-8859-1 データを解析しようとしています。ISO-8859-1 を解析するための Apple 独自の例を使用すると、次のようになります。

// path to xml file
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"];

// string of xml contents
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil];

NSLog(@"contents: %@", xmlFileContents);

コンソールで、文字列の内容が正確であることがわかります。

ただし、(パーサーで使用するために) NSData オブジェクトに変換しようとすると、次のようになります。

NSData *xmlData = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding];

しかし、didStartElement デリゲートが呼び出されるとÂ、エンコーディングの不一致によると思われるメッセージが表示されます。

NSXmlParser は ISO-8859-1 を処理できますか? もしそうなら、何が間違っていますか?

4

1 に答える 1

4

他の誰かがこのスレッドで<?xml version="1.0" encoding="ISO-8859-1"?>、NSXmlParser による適切な読み取りで始まる XML を取得する方法を理解しようとしている場合に備えて、ここに私が取り組んだものがあります。

// path to xml file
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"];

// string of xml contents (read in NSUTF8StringEncoding)
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil];

// interpret string of XML contents as ISO-8859-1 (NSISOLatin1StringEncoding)
NSData *xmlData = [xmlFileContents dataUsingEncoding:NSISOLatin1StringEncoding];

// spawn new thread to parse data
[NSThread detachNewThreadSelector:@selector(parseLineData:) toTarget:self withObject:xmlData];

XML コンテンツを as として読み込んでNSUTF8StringEncodingからNSDataasに読み込むことが、偽の文字NSUTF8StringEncodingを回避する唯一の方法でした。Â

于 2010-03-22T00:23:29.990 に答える