3

对于我的应用程序,我必须保存一个 XML 文档,其中包含一些带有 HTML 文本的元素。结果应该是示例:

<gpx>
  <wpt>
  <elementInHTML>
    &lt;p&gt;Sample text.&lt;/p&gt;
  </elementInHTML>
etc...

但是,当我将此 html 元素添加到我的 NSXMLDocument 时,“<”(to &lt;)会自动正确转义,但“>”不是(to &gt;)。

在代码中:

NSXMLElement *newWPT = [NSXMLElement elementWithName:@"wpt"];
NSXMLElement *htmlElement = [NSXMLElement elementWithName:@"elementInHTML"];
htmlElement.stringValue = @"<Sample text>";
[newWPT addChild:htmlElement];

但这会产生这样的 XML 文档:

<gpx>
  <wpt>
    <elementInHTML>
      &lt;p>Sample text.&lt;/p>
    </elementInHTML>
etc...

这个结果对于必须处理这个 xml 文件的设备是无效的。

有人知道如何将正确转义的 html 字符串包含到 NSXMLDocument 中吗?

4

1 回答 1

3

&该字符串为 XML 正确转义,大于它所在的有效字符:http: //www.w3.org/TR/REC-xml/#syntax

这似乎是一个设备实现特定的问题。

您的简单选择是将您的 html 标记包含在 CDATA 中。...并希望设备客户端 XML 解析器实现正确理解它。

(如果您的 html 标记还包括 CDATA 部分,则您必须将“>”替换为“>”,如之前的链接中所述。)

PD:任何搜索引擎中的 NSXMLNode CDATA 都会引导您更接近“复制粘贴”

编辑:

现在更多地了解原始问题中字符串的内容(请参阅问题评论)并根据字符串的性质回答这个其他问题也可能会有所帮助:Objective-C and Swift URL encoding

于 2014-06-03T13:40:06.927 回答