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

问题描述 投票:0回答:1

我从第三方 API 得到类似以下内容:

<el attr="test.

another test." />

我使用

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

但是,在委托中,该属性被转换为

test.  another test.
显然我希望看到它的换行符完好无损。

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

空白字符(#x20、#xD、#xA、#x9)由 将 #x20 附加到标准化值

参见第 3.3.3 节。

我有什么选择?请注意,它是第三方 API,所以我无法更改它,即使它是错误的。

ios xml nsxmlparser
1个回答
3
投票
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:] :)

© www.soinside.com 2019 - 2024. All rights reserved.