我已阅读XML文件并转换为NSXMLDocument对象。但是,由于存在“<”在节点的字符串内容中,它已被转换为“& lt”。因此,当我将其作为xml文档写入文件时,其中包含字符“& lt”。
如何将该文件写为普通的XML文件,其中“& lt”将替换为“<”。
谢谢和问候, 列宁
答案 0 :(得分:4)
当<
字符出现在文本节点中时,当您将xml写入文件时,它将被序列化为<
。
当您稍后使用xml解析器读取该文件时,文本节点将包含原始<
字符。
您还可以选择CDATA编码文本节点。在这种情况下,序列化字符在CDATA块内是<
。许多XML API不会保留CDATA和文本节点之间的任何差异。 CDATA应被视为一种逃避机制,使人类作者易于编辑。
答案 1 :(得分:1)
xml的文本节点中的<
应表示为<
。
如果在将其写入xml文件之前使用s/</</g
替换它,则在从该文件读取时会导致解析错误。
答案 2 :(得分:0)
您可以使用以下功能执行相反的操作
htmlspecialchars和
ヶ辆()
答案 3 :(得分:0)
当<
字符不属于XML标记(see here)时,必须对其进行转义。你真的不应该破坏XML规范...
但是,如果必须,您可以在编写XML文档之前执行一个技巧:
<
的实例
用一个不会的唯一字符串
由您的XML解析器转义(您知道的文件在文件中没有其他地方发生)。
像*-lt-*
这样的东西可能会这样做。*-lt-*
与常规<
字符。同样,打破XML规范是一个糟糕的主意......通过这样做,没有解析器能够读取新的XML文档。
答案 4 :(得分:0)
如果你想替换&lt; lt to&lt;在XML文档中通过php:
$xmlFile = file_get_contents("example.xml");
$xml= str_replace(['<','>'],['<','>'], $xmlFile);
echo $xml;
我通过XML从服务器获取新闻,然后将其存储到另一个xml文件中,我使用<
和>
生成结果,因此我使用了此方法。它不是存储XML的最智能方式,但我也不是专业的高级后退者。