Я пытаюсь загрузить HTML-страницу и проанализировать ее с помощью XMLHttpRequest (в последнем браузере Safari). К сожалению, я не могу заставить его работать!Анализ HTML с XPath/XMLHttpRequest
var url = "http://google.com";
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4){
response = xmlhttp.responseText;
var doc = new DOMParser().parseFromString(response, "text/xml");
console.log(doc);
var nodes = document.evaluate("//a/text()",doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
console.log(nodes);
console.log(nodes.snapshotLength);
for(var i =0; i<nodes.snapshotLength; i++){
thisElement = nodes.snapshotItem(i);
console.log(thisElement.nodeName);
}
}
};
xmlhttp.send(null);
текст получает успешно загружен (ответ содержит действительный HTML), и правильно разобран в дерево (документ представляет собой действительный DOM для страницы). Однако node.snapshotLength равно 0, несмотря на то, что запрос действителен и должен иметь результаты. Любые идеи о том, что происходит не так?
Вы можете получить доступ через «нормальный» DOM? Также вы можете напрямую использовать 'xmlhttp.responseXML'. – poke
Здесь вы можете найти ответ http://stackoverflow.com/questions/40729785/parsing-xmlhttprequest-result-using-xpath/40750779#40750779 – Leax