2010-12-14 55 views
1

在我的系統中,我不得不將一個大的javascript ajax系統移動到seam。我得到了通過添加javascript parseFromString在xml文檔中更改元素的順序

xml = (new DOMParser()).parseFromString(s, "text/xml"); 

我現在的問題是它剛剛引起我注意的是,是的DOMParser出於某種原因更改XML元素的順序正確工作。我把它縮小了,它必須是這個。因爲這些元素在離開服務器時按特定順序排序,所以dom解析器重組不是一件好事。任何人看到這個?誰知道怎麼修它?

回答

0

對於仍是有這個問題的人,我解決了這個問題由我自己寫的XML解析器。我一起停止使用DomParser,從那時起,我改變了json,根本沒有問題。

謝謝

+0

我有同樣的問題。你能爲我提供解決方案嗎? – 2012-08-18 13:36:17

0

如果是這種情況,我會非常驚訝。節點順序被定義爲在XML中很重要,我不相信任何瀏覽器的實現DomParser都不會尊重它。我建議你再看看你的代碼。

+0

我已經有了,它很奇怪。當它在ajax模式和jQuery中返回一個xmlresponse對象時,它的完美。但是在seam模式下,我必須將它解析成一個dom文檔,並且當我以不同的順序將文檔取出時。在這兩種情況下,服務器都會發送完全相同的xml作爲響應。我通過兩種不同的方式驗證了它。 – scphantm 2010-12-15 18:00:47

+0

有沒有可以發佈的測試頁? – 2010-12-15 21:38:32

1

我在IE 9 RC 1標準模式下試圖繞過另一個問題(XMLHttpRequest對象返回一個MSXML ActiveX對象,即使在標準模式下也是如此)。功能檢測看到DOMParser,兩個文檔不是兼容所以我使用的DOMParser會做的伎倆)

再現在IE 9中的問題RC 1

示例代碼:

var sXML = "<TEST ID=\"124\" TITLE=\"TitleValue\" DATE=\"2011-02-24T00:00:00\" STATUS=\"Processing\" EMPNAME=\"Smith, Sam\" STATUSCODE=\"P\" ROWNUM=\"1\" />"; 

var dpParser = new DOMParser(); 
var xdDoc = dpParser.parseFromString(sXML, "text/xml"); 

var xsSerialize = new XMLSerializer(); 
var sNewXML = xsSerialize.serializeToString(xdDoc); 

alert("Original XML:\n" + sXML + "\n\nNew XML:\n" + sNewXML); 

警報輸出...

原始XML:

<TEST ID="124" TITLE="TitleValue" DATE="2011-02-24T00:00:00" STATUS="Processing" EMPNAME="Smith, Sam" STATUSCODE="P" ROWNUM="1" /> 

新的XML:

<TEST ROWNUM="1" STATUSCODE="P" EMPNAME="Smith, Sam" STATUS="Processing" DATE="2011-02-24T00:00:00" TITLE="TitleValue" ID="124" /> 

更新: 我已經提交了一份bug報告與微軟的IE 9對這個問題,他們已經解決了它作爲 '設計'。

如果您在IE 9中使用DOMParser.parseFromString函數時希望您的XML屬性按特定順序排列,那麼您將希望顯式獲取屬性,而不是簡單地遍歷它們。

以下是錯誤報告: https://connect.microsoft.com/IE/feedback/details/645091/domparser-parsefromstring-in-ie-9-rc-1-rearranges-the-attributes-of-the-xml-node-passed-in

+0

嘿,鏈接不適合我。 :) – mlsteeves 2011-02-23 17:28:45

+0

它是重新排序你的xml或XmlSerializer的DOMParser嗎? – mlsteeves 2011-02-23 18:33:03

+0

該鏈接正常工作,但您需要使用Microsoft Connect進行註冊,他們讓您在查看任何錯誤之前填寫一份簡短調查......這是DOMParser重新排序的屬性(我在調試模式中逐步完成可以肯定 - 迭代使用索引的屬性集合也會顯示這個) – 2011-02-24 12:42:26