作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 jQuery 解析 XML 并转换回字符串时,IE 10 和 IE 11 未正确保留命名空间。除了编写我自己的字符串化代码之外,在 IE 10/11 中是否还有其他可接受的方法?
这是我正在使用的代码,我也制作了一个 fiddle :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
和 xml[0].innerHTML
在 IE 中都是 undefined
.奇怪!
在 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>
根子节点:
<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>
fiddle : http://jsfiddle.net/kd2tvb4v/4/
关于javascript - 如何在 IE 10/11 中可靠地将 XML 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28799419/
我是一名优秀的程序员,十分优秀!