如何在IE 10/11中可靠地将XML转换为String?

在使用jQuery解析XML并转换回字符串时,IE 10和IE 11未正确保留命名空间。 除了编写我自己的字符串代码之外,在IE 10/11中还有其他可接受的方法吗?

这是我正在使用的代码,我也做了一个小提琴: http : //jsfiddle.net/kd2tvb4v/2/

var origXml = '' + '' + ''; var xml = $($.parseXML(origXml).documentElement); var reprocessedXml = (new XMLSerializer()).serializeToString(xml[0]); $('#origXml').text(origXml); $('#reprocessedXml').text(reprocessedXml); 

所以,我认为xml[0].outerHTML可以完成这项工作。 奇怪的是,这在FF中可以正常工作,但xml[0].outerHTMLxml[0].innerHTML在IE中都是undefined的。 奇怪的!

在不可用的情况下获取outerHTML的经典技巧似乎仍然适用于这种情况:将节点附加到虚拟元素并使用.html() 。 这似乎重新排列了属性的排序(它按字母顺序排列),但一切都被保留了下来:

在IE11中测试过,没有IE10方便:

 //...your original code... var xml = $($.parseXML(origXml).documentElement); var rootChildXml=$('').append(xml).html(); console.log(origXML,rootChildXml); 

原始XML:

   

rootChildXml:

   

小提琴: http : //jsfiddle.net/kd2tvb4v/4/