使用xpath从responseText获取节点

时间:2011-07-09 13:12:09

标签: ajax xpath opera xmlhttprequest

我想使用xpath从网站获取所有div元素。我正在使用Opera 11.50。跨站点xhr工作,因为这是一个扩展(和responseText获取正确的内容,我可以说getElementsByTagName('div'),但我需要使用xpath)。请帮忙。

var xhr = new window.XMLHttpRequest();
xhr.open('GET','http://www.msn.com',true);
xhr.onreadystatechange = function(){
    if(this.readyState == 4 && this.status == 200){

        //first try
        var root = this.responseXML;
        var nodes = root.selectNodes('//div'); //nodes.length = 0 !!


        //second
        var doc = xhr.responseXML;
        var divs = doc.evaluate( '//div', doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
        // divs.snapshotLength = 0 ...    


    }
}

1 个答案:

答案 0 :(得分:0)

  

那么这是命名空间问题。我想做

var nodes = this.responseXML.selectNodes('//xhtml:div', function (prefix) { if (prefix === 'xhtml') return 'http://www.w3.org/1999/xhtml'; else return null; }) 
  

应该有效