最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

xpath - JavaScript on IE9. XMLDOM.selectSingleNode gives Unknown method -->concat - Stack Overflow

programmeradmin1浏览0评论

Why is this code giving me the following error on 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);
    }
}

Why is this code giving me the following error on 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);
    }
}
Share Improve this question asked May 9, 2012 at 18:46 AbdulAbdul 4197 silver badges15 bronze badges 1
  • Please fix your error message so that it's legible. Is concat a function? – Madbreaks Commented May 9, 2012 at 18:49
Add a ment  | 

1 Answer 1

Reset to default 5

Well Microsoft.XMLDOM is an antiquated programming id and you end up with an old MSXML version that by default does not support XPath 1.0 but rather an old, never standardized draft version. These days MSXML 6 is part of any OS or OS with latest service pack that Microsoft supports so simply consider to use an MSXML 6 DOM document with e.g.

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

If you insist on using Microsoft.XMLDOM then call doc.setProperty("SelectionLanguage", "XPath") before any selectSingleNode or selectNodes calls trying to use XPath 1.0.

发布评论

评论列表(0)

  1. 暂无评论