2010-03-08 147 views
5

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

如何以“& lt”替换为“<”作为普通XML文件写入文件。

感谢和问候, 列宁

回答

4

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

当您稍后阅读的XML解析器,文件,文本节点将包含原始<字符。

你也有CDATA编码的文本节点的选项。在这种情况下,在CDATA块内的序列化字符是<。许多XML API不会保留CDATA和文本节点之间的任何区别。 CDATA应该被认为是一种逃避机制,可以让人类作者轻松编辑。

1

在XML的文本节点的<应被表示为&lt;

如果要替换其写入到XML文件之前,使用s/&lt;/</g,这将导致当您从文件中读取解析错误。

0

您可以使用下面的功能做了相反的操作

用htmlspecialchars和

ヶ辆()

+0

感谢您的支持。将检查出来。 – boom 2010-03-08 05:30:54

+0

嗨,我的代码是在可可。你可以给其他方法来转换它在可可,而不是htmlspecialchars和htmlentities() – boom 2010-03-08 05:34:21

+0

@Lenin:对不起,我不知道cocao – Pavunkumar 2010-03-08 05:40:37

0

时,它不是一个XML标签的一部分<字符必须进行转义(see here)。你真的不应该破坏XML规范...

但是,如果必须,你可以写你的XML文档之前执行了一招:

  1. 有一个唯一的字符串替换您的< 实例是将不会被 转换为您的XML解析器(您知道的东西在文件的其他位置无处)。 类似*-lt-*可能会做。
  2. 让解析器生成文件& 保存。
  3. 阅读文件 明文的,并与常规< 字符替换您的实例*-lt-*
  4. 重写该文件, 翻译由XML解析器编写的版本。

再次,破坏XML规范是一个糟糕的主意......通过这样做,没有解析器将能够读取您的新XML文档。

0

如果你想通过PHP更换& LT到< XML文档中:

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

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

echo $xml; 

我从服务器通过XML获得新闻提要,然后将其保存到另一个XML文件,我在歌厅结果与&lt;&gt;所以我用这种方法。这不是存储XML的最聪明的方式,但我也不是一个大型的高级后台。