2011-09-24 69 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\"?>") ...,雖然這不是檢查/我會考慮替代品的好方法)。