我在PHP中遇到loadXML问题。出于某种原因,我的XML中的'
字符串将转换为'
。我不想要这个。我在保存它之前向XML添加了一些东西,我需要它(除了我添加的内容)保持其原始形式。如何关闭此自动转换?
答案 0 :(得分:2)
没有。该编码意味着原始输入是未转义的撇号,其被转义为不破坏XML。
如果您愿意,可以在从XML文件中读取值后,使用htmlspecialchars
重新对其进行重新编码。
答案 1 :(得分:1)
除非原始格式为canonical XML - ,因为'
未出现在规范XML 中,因此无法保证您的结果输出匹配原始形式。
文档中存在许多其他等效的XML序列化。除了处理诸如'
之类的字符实体引用之外,还无法确保:
<element/>
与<element></element>
。即使您可以通过'
传递'
来htmlspecialchars()
将其序列化为'
而不会以某种方式破坏XML的其余部分,但是当您突然无法匹配时来源有'
或saveXML()
或其混合。
如果您的输入XML不是规范的,那么根本就没有回头路。信息不会保留。
如果您确实设法开始将规范XML作为输入,那么在将DOM作为XML字符串序列化时,可以使用C14N()
代替{{1}}来确保输出匹配。