0

我发现由于被禁止的字符,NSXMLParser (XCode/iOS) 没有解析以下 XML 字符串。如果需要转义,应如何在发送到 XML 解析器之前对 XML 字符串进行转义。

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
 <Elem xmlns=\"Sample\"><Text Text=\"some text <name@somcompany.com> \"></Text></Elem>";

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
 <Elem xmlns=\"Sample\"><Text Text=\"some text \"quoted text\" \"></Text></Elem>";

两者都产生以下错误:

Error Domain=NSXMLParserErrorDomain Code=38 "The operation couldn’t be completed.
(NSXMLParserErrorDomain error 38.)

这可以正常工作:

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Elem xmlns=\"Sample\"><Text Text=\"some text \'quoted text\' \"></Text></Elem>";

谢谢。

4

1 回答 1

0

您可以尝试使用百分比编码转义字符。

str = @" \">";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

然后你可以恢复它们

str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

但我不确定您是否正确创建了 XML,或者您是否首先创建了它。

编辑

源(生成该 XML 的人)不正确,必须转义文本。您不能使用解析器执行此操作。

于 2013-02-24T01:21:42.423 回答