在IE 11中清空ActiveXObject(“Microsoft.XMLDOM”)

时间:2014-07-02 16:40:29

标签: javascript internet-explorer dom xml-parsing activex

我正在使用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对象是空的

enter image description here

我做错了什么吗?忘了设置一些东西?或者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的错误。 enter image description here

正如您所看到的那样,它成功创建了Active X对象,但是当我调用selectNode时它出错并尝试使用XPATHResult调用DOMParser的代码那么为什么呢Active X对象是否为空?

1 个答案:

答案 0 :(得分:0)

如果我想使用Microsoft.XMLDOM我必须添加xmlDoc.setProperty("SelectionLanguage", "XPath");,我会找到答案here。我在代码中唯一改变的是我添加了一段新代码

try {
            xmlDoc.setProperty("SelectionLanguage", "XPath");
            xmlNode = xmlDoc.selectNodes("//fields/data[contains(@options, 'formatcurrency')]");                
        }