无法解析 "&"

13 浏览
0 Comments

无法解析 "&"

我的XML文件包含了几种不同语言的单词,包括拉丁语等。我能够解析这些拉丁字符,除了一个问题,就是我无法解析"&"字符。以下是我收到的错误信息:

实体:第223行:解析器错误:>xmlParseEntityRef:没有名称Ull>永远属于我,现在&永远属于我。Ull>永远属于我,因为你是我的宝藏。Ull

0
0 Comments

在解析XML之前,我在我的代码中使用了这一行简单的代码:

cleaned = [original stringByReplacingOccurrencesOfString:@"&" withString:@"&"];

在此之前,我使用了[NSString stringByDecodingHTMLEntities];,因为我的服务器返回带有标签的消息。

问题的原因是在代码中替换字符串时,使用了错误的替换字符。在XML中,"&"符号被转义为"&",因此在替换时应该使用"&"来表示"&"符号。然而,原始代码中使用了错误的替换字符"&",导致无法正确解析"&"符号。

要解决这个问题,只需将代码中的替换字符更正为正确的字符即可。正确的替换字符应为"&",如下所示:

cleaned = [original stringByReplacingOccurrencesOfString:@"&" withString:@"&"];

通过使用正确的替换字符,即可解决无法解析"&"符号的问题。这样,在解析XML之前,所有的"&"符号都会被正确地替换为"&",从而确保XML能够被正确解析。

0
0 Comments

在上述内容中,出现了一个关于"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的信息。

0