无法解析 "&"
在解析XML之前,我在我的代码中使用了这一行简单的代码:
cleaned = [original stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
在此之前,我使用了[NSString stringByDecodingHTMLEntities];
,因为我的服务器返回带有标签的消息。
问题的原因是在代码中替换字符串时,使用了错误的替换字符。在XML中,"&"符号被转义为"&",因此在替换时应该使用"&"来表示"&"符号。然而,原始代码中使用了错误的替换字符"&",导致无法正确解析"&"符号。
要解决这个问题,只需将代码中的替换字符更正为正确的字符即可。正确的替换字符应为"&",如下所示:
cleaned = [original stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
通过使用正确的替换字符,即可解决无法解析"&"符号的问题。这样,在解析XML之前,所有的"&"符号都会被正确地替换为"&",从而确保XML能够被正确解析。
在上述内容中,出现了一个关于"NOt able to parse "&"的问题。根据内容可以得出,此问题的出现原因是因为"&"符号在XML中被视为特殊字符,是一个实体的开始。为了解决这个问题,需要将"&"写成"& amp",或者将其包含在一个CDATA部分中。
关于CDATA部分的说明,请参考此链接:http://www.w3.org/TR/xml/#dt-cdsection
对于如何在Objective-C中转义XML字符串,请参考此链接:http://inspiredcoding.com/iphonesdk/escaping-xml-characters-in-objective-c
在提供的链接中,代码似乎返回了一个从转义后的字符串中得到的非转义字符串,是这样吗?如果是这样的话,那么你可以传递一个类似于'B&B'的字符串,它将返回'B&B'。我问这个问题,因为在我的情况下,我有一个由用户手动创建的XML文件。所以我猜在解析之前我必须将那些"&"替换为"&",这与提供的代码相反。是否也有类似的解决方法?
你可以查看这个链接:http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMNSString%2BXML.h,或者在这里查看:http://stackoverflow.com/questions/803676,获取更多关于如何编码NSString用于XML和HTML的信息。