【发布时间】:2014-08-23 13:39:20
【问题描述】:
我正在使用ActiveXObject("Microsoft.XMLDOM"); 来帮助加载我拥有的 XML 文件。我知道 IE 11 现在支持 DOMparser,但是在阅读了这个 stack mover flow post 之后,似乎 IE 11 仍然支持 Active X。所以按照建议我有这个代码
try {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
console.log(xmlDoc);
xmlDoc.async = false;
console.log(xml);
xmlDoc.loadXML(xml);
return xmlDoc;
} catch (e) {
console.log(e);
try {
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xml, "text/xml");
return xmlDoc;
}catch(e) {
console.log(e); //Tesitng for error in chrome
}
}
问题是 Active X 中的对象是空的
我做错了吗?忘了设置什么?还是 IE 11 在较新版本中停止支持 Active X 对象?我很想使用 DOM 解析器,但 IE 不支持 XPathResult
编辑
@Teemu 说 ActiveXObj 没有toString() 进一步向下我的代码是
//the function loadXMLDocStr calls the above code
var xmlDoc = GenFunctions.loadXMLDocStr(theXml);
var xmlNode;
try {
xmlNode = xmlDoc.selectNodes("//tfields/data[contains(@options, 'formatcurrency')]");
} catch (e) {
var listofNode;
listofNode = xmlDoc.evaluate("//fields/data[contains(@options, 'formatcurrency')]", xmlDoc, null, XPathResult.ANY_TYPE, null);
xmlNode = new Array();
var node = listofNode.iterateNext();
while (node) {
xmlNode.push(node);
node = listofNode.iterateNext();
}
}
GenFunctions.populateSelect("field", xmlNode, "name", "col", true, "description", null);
}
结果如上,但这次我包含了有关 XPATHResult 的错误。
如您所见,它成功创建了 Active X 对象,但是当我调用 selectNode 时,它出错并尝试使用 XPATHResult 调用用于 DOMParser 的代码 那么为什么 Active X对象为空?
【问题讨论】:
-
嗯 IE11 支持 DOMParser 所以应该可以工作....
-
@epascarello 问题是IE不支持
XPATHResult,如果我使用DOMParser,我需要它才能从XML中获取节点 -
注意,ActiveX 通常没有
toString()方法,并且它们可能无法枚举(至少通过任何 JS 方法),因此您无法使用控制台检查它们的属性。跨度> -
@Teemu 有道理。我将扩展问题以更好地反映某些问题。
标签: javascript internet-explorer dom xml-parsing activex