转换<到< xml文档

时间:2010-03-08 05:22:15

标签: xml

我已阅读XML文件并转换为NSXMLDocument对象。但是,由于存在“<”在节点的字符串内容中,它已被转换为“& lt”。因此,当我将其作为xml文档写入文件时,其中包含字符“& lt”。

如何将该文件写为普通的XML文件,其中“& lt”将替换为“<”。

谢谢和问候, 列宁

5 个答案:

答案 0 :(得分:4)

<字符出现在文本节点中时,当您将xml写入文件时,它将被序列化为&lt;

当您稍后使用xml解析器读取该文件时,文本节点将包含原始<字符。

您还可以选择CDATA编码文本节点。在这种情况下,序列化字符在CDATA块内是<。许多XML API不会保留CDATA和文本节点之间的任何差异。 CDATA应被视为一种逃避机制,使人类作者易于编辑。

答案 1 :(得分:1)

xml的文本节点中的<应表示为&lt;

如果在将其写入xml文件之前使用s/&lt;/</g替换它,则在从该文件读取时会导致解析错误。

答案 2 :(得分:0)

您可以使用以下功能执行相反的操作

  

htmlspecialchars和

     

ヶ辆()

答案 3 :(得分:0)

<字符不属于XML标记(see here)时,必须对其进行转义。你真的不应该破坏XML规范...

但是,如果必须,您可以在编写XML文档之前执行一个技巧:

  1. 替换<的实例 用一个不会的唯一字符串 由您的XML解析器转义(您知道的文件在文件中没有其他地方发生)。 像*-lt-*这样的东西可能会这样做。
  2. 让解析器生成文件&amp; 保存它。
  3. 将文件读入 明文,并替换您的实例 *-lt-*与常规< 字符。
  4. 重写文件, 破坏XML解析器编写的版本。
  5. 同样,打破XML规范是一个糟糕的主意......通过这样做,没有解析器能够读取新的XML文档。

答案 4 :(得分:0)

如果你想替换&lt; lt to&lt;在XML文档中通过php:

$xmlFile = file_get_contents("example.xml");

$xml= str_replace(['&lt;','&gt;'],['<','>'], $xmlFile);

echo $xml;

我通过XML从服务器获取新闻,然后将其存储到另一个xml文件中,我使用&lt;&gt;生成结果,因此我使用了此方法。它不是存储XML的最智能方式,但我也不是专业的高级后退者。