我正在使用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对象是空的呢?
如果我想使用here,我发现答案Microsoft.XMLDOM
,我必须添加xmlDoc.setProperty("SelectionLanguage", "XPath");
。我在代码中唯一改变的是我添加了一段新代码
try {
xmlDoc.setProperty("SelectionLanguage", "XPath");
xmlNode = xmlDoc.selectNodes("//fields/data[contains(@options, 'formatcurrency')]");
}