loadXML转换为'

时间:2014-10-13 16:42:18

标签: php xml

我在PHP中遇到loadXML问题。出于某种原因,我的XML中的'字符串将转换为'。我不想要这个。我在保存它之前向XML添加了一些东西,我需要它(除了我添加的内容)保持其原始形式。如何关闭此自动转换?

2 个答案:

答案 0 :(得分:2)

没有。该编码意味着原始输入是未转义的撇号,其被转义为不破坏XML。

如果您愿意,可以在从XML文件中读取值后,使用htmlspecialchars重新对其进行重新编码。

答案 1 :(得分:1)

除非原始格式为canonical XML - ,因为'未出现在规范XML 中,因此无法保证您的结果输出匹配原始形式。

文档中存在许多其他等效的XML序列化。除了处理诸如'之类的字符实体引用之外,还无法确保:

  1. 属性以相同的顺序显示。
  2. 维护属性引用样式。
  3. 空元素的表示方式相同。例如<element/><element></element>
  4. XML声明保持不变。
  5. ......等等。
  6. 即使您可以通过&apos;传递'htmlspecialchars()将其序列化为&#039;而不会以某种方式破坏XML的其余部分,但是当您突然无法匹配时来源有'saveXML()或其混合。

    如果您的输入XML不是规范的,那么根本就没有回头路。信息不会保留。


    如果您确实设法开始将规范XML作为输入,那么在将DOM作为XML字符串序列化时,可以使用C14N()代替{{1}}来确保输出匹配。