2013-07-16 37 views
0

下面的代碼應alert完全相同的作爲輸入:的Webkit不提供XML聲明與serializeToString

var string = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Target="media/image3.png" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="rId8"/></Relationships>'; 

var xml = new window.DOMParser().parseFromString(string, 'text/xml'); 

// Manipulate the DOM/do something... 

var newString = new XMLSerializer().serializeToString(xml); 
alert(newString); 

然而,下,它刪除XML聲明:

這裏的a demo(試試)。我發現a bug on Webkit似乎與這個故事一起去。

我怎樣才能確保我的newString具有相同的XML聲明,它在string開始?

回答

0

您可以通過查詢聲明的存在,並明確添加一個如果沒有被發現:

if(newString.indexOf('<?xml') !== 0) 
    newString = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' + newString; 

這裏的an updated demo

另外,使用輸入字符串的聲明:

if(newString.indexOf('<?xml') !== 0) 
    newString = string.substring(0, string.indexOf('\n')) + newString; 

Another demo