Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml NSString到NSData编码失败_Xml_Iphone_Nsxmlparser_Iso 8859 1 - Fatal编程技术网

Xml NSString到NSData编码失败

Xml NSString到NSData编码失败,xml,iphone,nsxmlparser,iso-8859-1,Xml,Iphone,Nsxmlparser,Iso 8859 1,我正在尝试使用NSXmlParser解析ISO-8859-1数据。使用苹果自己解析ISO-8859-1的示例,我有以下内容 // path to xml file NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"]; // string of xml contents NSString *xmlFileContents = [NSString stringWit

我正在尝试使用NSXmlParser解析ISO-8859-1数据。使用苹果自己解析ISO-8859-1的示例,我有以下内容

// 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 *xmlData = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding];
我发现在控制台中,字符串的内容是准确的

但是,当我尝试将其转换为NSData对象(用于解析器)时,我会执行以下操作

// 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 *xmlData = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding];
但是当我的didStartElement代理被调用时,我看到出现了
,我认为这是由于编码差异造成的


NSXmlParser可以处理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];

NSUTF8StringEncoding
的形式读入XML内容,然后以
NSUTF8StringEncoding
的形式读入
NSData
是我避免伪
字符的唯一方法。

以防万一其他人在这个线程上试图弄清楚如何获取以
读取开头的XML正确地说,NSXmlParser就是这样工作的

// 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];

NSUTF8StringEncoding
的形式读入XML内容,然后以
NSUTF8StringEncoding
的形式读入
NSData
是我避免伪
字符的唯一方法。

NSXMLParser不能从
声明中理解它所处理的编码吗?我想是这样的。我的XML以:开头,就像我说的,NSString内容日志正确。将其转换为NSData,启动NSXmlParser并转储在didStartElement中找到的内容,会在某些区域产生这些字符。与其将文件读入NSString,然后将其转换为NSData,还不如简化操作[NSData DATA WITH CONTENTS OFFILE:xmlFilePath]是的,我实际上使用的是[NSData dataWithContentsOfFile:xmlFilePath]最初,我注意到ISO编码中的伪字符。然后我使用NSString方法只是为了确保它正确地将其读入字符串。NSXMLParser不能从
声明中理解它处理的编码吗?我想是的。我的XML以:开头,就像我说的,NSString内容日志正确。将其转换为NSData,启动NSXmlParser并转储在didStartElement中找到的内容,会在某些区域产生这些字符。与其将文件读入NSString,然后将其转换为NSData,还不如简化操作[NSData DATA WITH CONTENTS OFFILE:xmlFilePath]是的,我实际上正在使用[NSData dataWithContentsOfFile:xmlFilePath]最初注意到ISO编码中的伪字符。然后我执行NSString方法以确保它正确地将其读入字符串。