2011-09-24 58 views
3

好的,所以我们有一个web应用程序通过XML与Web服务进行通信。到目前为止,我们只是通过将字符串串起来(通过XMLHttpRequest/POST发送)来组装这些XML。我很想将其重新分解为使用这些工具来构建和序列化内置于浏览器中的XML DOM树,即document.implementation & XMLSerializer()。serializeToString(doc)(请参阅Mozilla文档herehere )。到目前为止,它一直在正常工作,除非得到的字符串不包含XML声明。从浏览器序列化XML DOM不会创建XML声明

那么,这应该怎么工作?任何好的建议和/或阅读?

哦,是的,我发现this描述问题和hacky解决方法的mozilla错误(链接的线程可通过archive.org获得)。

回答

1

不同的浏览器在输出xml声明时有不同的行为。

这里是我的经验:

  • 在Mac歌剧院12.15 - XML声明
  • 6.0的Safari在Mac上 - 无申报
  • 铬26.0在Mac上 - 无申报
  • 火狐21.0在Mac上 - 没有声明

不确定IE做什么。另一个值得注意的观察是,似乎没有API(我发现)关闭了Opera中的声明。因此,我会发现比您指出的那个知道XML声明是否已经存在或不存在的更好的'黑客'。也许基于字符串的快速检查,如果序列化的表单包含声明将是足够的(例如if (serialized.slice(0, 21) == "<?xml version=\"1.0\"?>") ...,虽然这不是检查/我会考虑替代品的好方法)。