奇怪的XML解析与符号

时间:2011-12-15 06:47:19

标签: iphone xml parsing nsxmlparser

我正在使用NSXMLParsing来解析一些XML数据。

我有一个名为.... <Email>abc@expressl&t.net</Email>

的元素

所以当didStartElement委托回复elementName电子邮件

它将进入foundCharacters以获取电子邮件文本。

但是在foundCharacters文本字符串中,我只得到abc@expressl而不是全文。它将&t视为特殊角色。这就是为什么之后它会进入parseErrorOccurred委托。

如何避免此类错误。我不能硬编码任何东西来取代文字。电子邮件应按原样打印。

2 个答案:

答案 0 :(得分:3)

简单地说,这不是有效的XML。必须转义&字符。来自section 2.4 of the XML 1.0 spec

  

&符号(&)和左尖括号(<)不得以字面形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串&amp;&lt;进行转义。

如果要使用XML解析器,则需要为其提供有效的XML。无论创建什么,XML都应该为您转义:

<Email>abc@expressl&amp;t.net</Email>

是什么创建了XML文件?当人们从字符串构建XML而不是使用XML API来创建XML时,通常会发生这种情况。

答案 1 :(得分:1)

有效

<Email>abc@expressl&t.net</Email>

应该转义为

<Email>abc@expressl&amp;t.net</Email>