Ios 使用NSXMLParser的XML属性中的特殊字符

Ios 使用NSXMLParser的XML属性中的特殊字符,ios,xml,api,nsxmlparser,Ios,Xml,Api,Nsxmlparser,我从第三方API中获得如下信息: <el attr="test. another test." /> 我使用NSXMLParser将文件读入我的应用程序 但是,在委托中,属性转换为test。另一个测试。显然我希望看到断线完好无损 我最初认为这是一个bug,但根据XML规范,它做了正确的事情: 空格字符(#x20、#xD、#xA、#x9)由 将#x20追加到规范化值 () 我有什么选择?请注意,这是一个第三方API,所以我不能更改它,即使它是错误的 NSData *xmlDat

我从第三方API中获得如下信息:

<el attr="test.

another test." />

我使用
NSXMLParser
将文件读入我的应用程序

但是,在委托中,属性转换为
test。另一个测试。
显然我希望看到断线完好无损

我最初认为这是一个bug,但根据XML规范,它做了正确的事情:

空格字符(#x20、#xD、#xA、#x9)由 将#x20追加到规范化值

()

我有什么选择?请注意,这是一个第三方API,所以我不能更改它,即使它是错误的

NSData *xmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"url://"]];
NSMutableString *myXmlStr = [[NSMutableString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];
NSRange range = [myXmlStr rangeOfString:@"\n"];
[myXmlStr replaceCharactersInRange:range withString:@"[:newline:]"];
NSData *newXmlData = [myXmlStr dataUsingEncoding:NSUTF8StringEncoding];
只要你喜欢,就用新行字符替换[:newline:]:)


只要用新行字符替换[:newline:],只要你喜欢:)

如果我理解正确,你是在寻找不符合规范的解析器?您可能想看看是否已经可以让您访问“raw”属性,尽管我有点怀疑它。你唯一的选择是破解你自己的不符合规范的解析器(顺便说一句,除非你真的没有其他选择,否则你真的不应该这么做)。是的,这几乎是我的结论。我希望我是错的:(如果我理解正确,您正在寻找一个不符合规范的解析器?您可能想看看是否可能已经允许您访问“raw”属性,尽管我有点怀疑它。您唯一的其他选择是破解您自己的不符合规范的解析器(顺便说一句,除非你真的没有其他选择,否则你真的不应该这么做。)是的,这几乎是我的结论。我希望我是错的:(一个好主意!但如果有不止一个换行符,他可能应该使用
NSString*newXmlString=[myxmlstringbyreplacingoccurrencesofstring:@“\n”with string:@]
。但真的,好主意。好主意!但如果有多个换行符,他可能应该使用
NSString*newXmlString=[myXmlString stringByReplacingOccurrencesOfString:@“\n”with string:@]”。
。但真的,好主意。