3

为什么这段代码在 IE 上给我以下错误:“Unknown Method. //author[@select = -->concat('tes'<--,'ts')]?

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);
    }
}
4

1 回答 1

5

好吧Microsoft.XMLDOM,这是一个过时的编程 id,您最终会得到一个旧的 MSXML 版本,默认情况下它不支持 XPath 1.0,而是一个旧的、从未标准化的草稿版本。如今,MSXML 6 是任何操作系统或具有 Microsoft 支持的最新服务包的操作系统的一部分,因此只需考虑使用 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.XMLDOMthen 调用doc.setProperty("SelectionLanguage", "XPath")之前的任何selectSingleNodeselectNodes尝试使用 XPath 1.0 的调用。

于 2012-05-10T09:19:31.883 回答