当使用 jQuery 解析 XML 并将其转换回字符串时,IE 10 和 IE 11 未正确保留命名空间。除了编写我自己的 stringify 代码之外,还有其他可接受的方法可以在 IE 10/11 中执行此操作吗?
这是我正在使用的代码,我也做了一个小提琴:http://jsfiddle.net/kd2tvb4v/2/ http://jsfiddle.net/kd2tvb4v/2/
var origXml =
'<styleSheet'
+ ' xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"'
+ ' xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"'
+ ' xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
+ ' mc:Ignorable="x14ac">'
+ '<fonts count="0" x14ac:knownFonts="1"></fonts>'
+ '</styleSheet>';
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
and xml[0].innerHTML
都是undefined
在IE中。诡异的!
经典的获取技巧outerHTML
当它不可用时,在这种情况下似乎仍然有效:将节点附加到虚拟元素并使用.html()
。这似乎重新排列了属性的顺序(按字母顺序排列),但所有内容都被保留:
在IE11中测试,手边没有IE10:
//...your original code...
var xml = $($.parseXML(origXml).documentElement);
var rootChildXml=$('<root />').append(xml).html();
console.log(origXML,rootChildXml);
原始 XML:
<styleSheet xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
mc:Ignorable="x14ac">
<fonts count="0" x14ac:knownFonts="1"></fonts></styleSheet>
rootChildXml:
<stylesheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
mc:Ignorable="x14ac"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<fonts x14ac:knownFonts="1" count="0"></fonts></stylesheet>
小提琴:http://jsfiddle.net/kd2tvb4v/4/ http://jsfiddle.net/kd2tvb4v/4/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)