2011-07-09 91 views
2

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

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 ...  


    } 
} 
+0

您所面临的一个命名空间的问题。请包括服务器响应XML的前几行。 – Tomalak

+0

这是一个普通的XHTML文档,但是如何指定html名称空间? – Marian

+0

它是XHTML,是的。 – Marian

回答

0

好那么它是一个命名空间的问题。我猜做

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

应该工作