0

以下代码应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 声明:

这是一个演示(在上尝试)。

在 Webkit 上发现了一个似乎与这个故事有关的错误。

我怎样才能确保我newString的 XML 声明与在开始时给出的 XML 声明相同string

4

1 回答 1

0

您可以检查是否存在声明,如果没有找到,则显式添加:

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

这是一个更新的演示

或者,要使用输入字符串的声明:

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

另一个演示

于 2013-07-16T01:44:15.840 回答