2011-07-09 2 views
2

Je veux obtenir tous les éléments div d'un site web en utilisant xpath. J'utilise Opera 11.50. Cross site xhr fonctionne parce que c'est une extension (et responseText obtient le bon contenu, et je peux dire getElementsByTagName ('div'), mais j'ai besoin d'utiliser xpath). S'il vous plaît aider.Récupère les nœuds de responseText en utilisant 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 ...  


    } 
} 
+0

Vous êtes face à un problème d'espace de noms. Veuillez inclure les premières lignes du XML de réponse du serveur. – Tomalak

+0

C'est un document XHTML normal, mais comment spécifier l'espace de noms html? – Marian

+0

c'est XHTML, oui. – Marian

Répondre

0

Eh bien il est un problème d'espace de noms. Je suppose que faire

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

devrait fonctionner

Questions connexes