保存NSXMLDocument转义某些NSXMLElements的HTML

时间:2013-07-03 19:33:40

标签: html objective-c xml nsxmlelement

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

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

但是当我将这个html元素添加到我的NSXMLDocument时,'&lt;' (到&lt;)会自动正确转义,但'&gt;'不(到&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中吗?

1 个答案:

答案 0 :(得分:3)

&amp;正确地为XML填充字符串,大于有效字符:http://www.w3.org/TR/REC-xml/#syntax

它似乎是设备实现特定的问题。

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

(如果您的html标记还包含CDATA部分,则您必须使用&#34;&amp; gt;&#34;来查找/替换&#34;&gt;&#34;之前的链接。)

P.D。:任何搜索引擎中的NSXMLNode CDATA都会引导您更接近&#34;复制粘贴&#34;

编辑:

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