jQuery XML解析/操作IE8错误
我正在使用jQuery $ .get加载XML文件。 加载内容后,我可以操作它并使用.append()将xml节点附加到我自己的元素。 这适用于chrome和firefox,但不适用于IE8。
xml文件的示例:
我需要分离所有的THEME节点并将它们附加到我自己的对象上。
这是我的代码的本质:
var themes = $(""); $.get('url/themes.xml', function(data, textStatus, jqXHR) { var xml = data; themes.append($(xml).children("themes").children('theme')); }, 'xml');
仅在IE上的themes.append行上发生错误,这是日志显示的内容:
没有这样的接口支持
我可以不在IE上操作和附加XML元素吗?
有两个问题:
-
来自文档:
查询(html [,ownerDocument])
html:即时创建的HTML字符串。 请注意,这解析HTML 而不是XML 。 -
IE遵循DOM规范,不接受在文档之间移动节点。
这解决了这两个问题,也适用于我在IE中:
//themes will be a jQuery-Object containing the documentElement var themes = $($.parseXML(" ").getElementsByTagName('*')[0]); $.get('url/themes.xml', function(data, textStatus, jqXHR) { var xml = $($.parseXML(data)); themes.append(xml.children("themes").children('theme')); }, 'text' );
尝试以这种方式序列化fetch XML元素:
function xml2Str(xmlNode) { try { // Gecko-based browsers, Safari, Opera. return (new XMLSerializer()).serializeToString(xmlNode); } catch (e) { try { // Internet Explorer. return xmlNode.xml; } catch (e) {//Strange Browser ?? alert('Xmlserializer not supported'); } } return false; }