为什么这段代码会在IE上给我以下错误:“未知方法。// author [@select =-> concat('tes'

function a()
{
    try
    {
        var xml ='<?xml version="1.0"?><book><author select="tests">blah</author></book>';


        var doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.loadXML(xml);

        node = doc.selectSingleNode("//author[@select = concat('tes','ts')]");
        if(node == null)
        {
            alert("Node is null");
        }
        else
        {
            alert("Node is NOT null");
        }
    } catch(e)
    {
        alert(e.message);
    }
}

最佳答案

好吧Microsoft.XMLDOM是一个过时的编程ID,最终您会得到一个旧的MSXML版本,默认情况下它不支持XPath 1.0,而是一个旧的,从未标准化的草稿版本。如今,MSXML 6是Microsoft所支持的任何OS或具有最新Service Pack的OS的一部分,因此只需考虑使用MSXML 6 DOM文档,例如

        var xml ='<?xml version="1.0"?><book><author select="tests">blah</author></book>';

  var doc = new ActiveXObject("Msxml2.DOMDocument.6.0");
  doc.loadXML(xml);

        node = doc.selectSingleNode("//author[@select = concat('tes','ts')]");
        if(node == null)
        {
            alert("Node is null");
        }
        else
        {
            alert("Node is NOT null");
        }

如果您坚持使用Microsoft.XMLDOM,请在尝试使用XPath 1.0的任何doc.setProperty("SelectionLanguage", "XPath")selectSingleNode调用之前调用selectNodes

关于javascript - IE9上的JavaScript。 XMLDOM.selectSingleNode提供未知方法-> concat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10522236/

10-09 18:58