2011-07-09 98 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; }) 

應該工作