Webkit不提供带有serializeToString的XML声明

时间:2013-07-16 01:42:33

标签: javascript xml webkit xmlserializer

以下代码应alert与输入完全相同:

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具有与string开始时相同的XML声明?

1 个答案:

答案 0 :(得分: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