2013-04-01 12 views
0

Я пытаюсь извлечь XML с помощью XPath. Он отлично работает с Firefox и Chrome, но он не работает с IE9. Есть ли какой-нибудь трюк или хак, который я должен делать? Вы можете видеть это here.Xpath несовместим с Internet Explorer

Вот HTML:

<!DOCTYPE html> 
<html> 
<body> 
<script> 
function loadXMLDoc(dname) 
{ 
    if (window.XMLHttpRequest) 
    { 
     xhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhttp.open("GET",dname,false); 
    xhttp.send(""); 
    return xhttp.responseXML; 
} 

//xml=loadXMLDoc("productfeed-production-version_sample.xml"); 
xml=loadXMLDoc("data.xml"); 
//path="/Products/Product/Category" 
path="root/article[3]/Price" 
// code for IE 
if (window.ActiveXObject) 
{ 
    var nodes=xml.selectNodes(path); 

    for (i=0;i<nodes.length;i++) 
    { 
     document.write(nodes[i].childNodes[0].nodeValue); 
     document.write("<br>"); 
    } 
} 
// code for Mozilla, Firefox, Opera, etc. 
else if (document.implementation && document.implementation.createDocument) 
{ 
    var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 
    var result=nodes.iterateNext(); 

    while (result) 
    { 
     document.write(result.childNodes[0].nodeValue); 
     document.write("<br>"); 
     result=nodes.iterateNext(); 
    } 
} 
</script> 

</body> 
</html> 

Вот XML-файл:

<?xml version="1.0" encoding="iso-8859-1"?> 
<root> 
<article> 
    <title>Best of the West - Édition Été 2013</title> 
    <description>Un voyage dans l'Ouest américain est sans aucun doute ce qu'il y a de mieux pour qui veut se rendre aux Etats-Unis! Vous y transiterez par trois des villes les plus branchées...</description> 
    <url>http://www.connections.be</url> 
    <urltext>Visit the Site: connections.be</urltext> 
    <Price>199,99</Price> 
</article> 
<article> 
    <title>Hôtel Yotel</title> 
    <description>Prenez le concept des hôtels capsule japonais, ajoutez-y le meilleur de la première classe des avions, saupoudrez le tout avec un style urbain et tendance,...</description> 
    <url>http://www.connections.be</url> 
    <urltext>Learn more</urltext> 
    <Price>199,99</Price> 
</article> 
<article> 
    <title>Essential Thailand</title> 
    <description>Ce programme individuel, idéal pour un premier voyage en Thaïlande, vous emmène à la découverte des points d'orgue de Bangkok et de Chiang Mai.</description> 
    <url>http://www.connections.be</url> 
    <urltext>Continue Reading...</urltext> 
    <Price>199,99</Price> 
</article> 
</root> 
+0

Что именно происходит с IE 9, когда вы говорите «это не работает»? У меня здесь IE 10, и это говорит о том, что метод 'selectNodes' не поддерживается. Я знаю, как исправить это, гарантируя, что HTTP-запрос не выполняется с помощью XMLHttpRequest, а с помощью 'new ActiveXObject ('Msxml2.DOMDocument.6.0')', так что 'responseXML' является документом DOM MSXML, который поддерживает XPath с' selectNodes' но я в настоящее время не знаю, с какой проблемой вы сталкиваетесь с IE 9. Поэтому, пожалуйста, предоставьте некоторые детали об ошибке, которую вы получите, если вы ее получите. –

ответ

1

Вы должны использовать один из следующих рекомендуемых библиотек XPath для того, чтобы XPath работать в IE:

  • JavaScript-XPath (я использую этот) Обновление: Это уже не действует, archived version from late 2016 можно увидеть в Интернет-архиве.

  • wicked-good-xpath - Это повторная реализация JavaScript-XPath от Google, быстрее и с меньшим размером кода.

  • jquery-xpath - Расширение jQuery с поддержкой XPath 2.0.

Удачи вам!