如何在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].outerHTML
和xml[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/