我已阅读的XML文件,并转换成NSXMLDocument对象。但是,由于节点的字符串内容中存在“<”,因此它已被转换为“& lt”。所以,当我将它作为xml文档写入文件时,它具有“& lt”字符。转换&LT至<xml文档
如何以“& lt”替换为“<”作为普通XML文件写入文件。
感谢和问候, 列宁
我已阅读的XML文件,并转换成NSXMLDocument对象。但是,由于节点的字符串内容中存在“<”,因此它已被转换为“& lt”。所以,当我将它作为xml文档写入文件时,它具有“& lt”字符。转换&LT至<xml文档
如何以“& lt”替换为“<”作为普通XML文件写入文件。
感谢和问候, 列宁
当<
字符出现在文本节点中时,它会在您将xml写入文件时序列化为<
。
当您稍后阅读的XML解析器,文件,文本节点将包含原始<
字符。
你也有CDATA编码的文本节点的选项。在这种情况下,在CDATA块内的序列化字符是<
。许多XML API不会保留CDATA和文本节点之间的任何区别。 CDATA应该被认为是一种逃避机制,可以让人类作者轻松编辑。
在XML的文本节点的<
应被表示为<
。
如果要替换其写入到XML文件之前,使用s/</</g
,这将导致当您从文件中读取解析错误。
您可以使用下面的功能做了相反的操作
用htmlspecialchars和
ヶ辆()
时,它不是一个XML标签的一部分<
字符必须进行转义(see here)。你真的不应该破坏XML规范...
但是,如果必须,你可以写你的XML文档之前执行了一招:
<
实例是将不会被 转换为您的XML解析器(您知道的东西在文件的其他位置无处)。 类似*-lt-*
可能会做。<
字符替换您的实例*-lt-*
。再次,破坏XML规范是一个糟糕的主意......通过这样做,没有解析器将能够读取您的新XML文档。
如果你想通过PHP更换& LT到< XML文档中:
$xmlFile = file_get_contents("example.xml");
$xml= str_replace(['<','>'],['<','>'], $xmlFile);
echo $xml;
我从服务器通过XML获得新闻提要,然后将其保存到另一个XML文件,我在歌厅结果与<
和>
所以我用这种方法。这不是存储XML的最聪明的方式,但我也不是一个大型的高级后台。
感谢您的支持。将检查出来。 – boom 2010-03-08 05:30:54
嗨,我的代码是在可可。你可以给其他方法来转换它在可可,而不是htmlspecialchars和htmlentities() – boom 2010-03-08 05:34:21
@Lenin:对不起,我不知道cocao – Pavunkumar 2010-03-08 05:40:37