2011-12-23 2 views
1

, что является лучшим способом изменить (без JQuery) эти HTML/JavaScript для работы с IE9,Javascript загрузки XML из документа с IE9

<html> 
    <body> 
     <div id="xmls"> 
      <xml id="myXml"> 
       <bookstore> 
        <book category="COOKING"> 
         <title lang="en">Everyday Italian</title> 
         <author>Giada De Laurentiis</author> 
         <year>2005</year> 
         <price>30.00</price> 
        </book> 
       </bookstore> 
      </xml> 
     </div> 
     <!-- ...more html --> 
    </body> 
</html> 

И прочитайте этот HTML раздел с скриптом

function readBooks() { 
    var doc = null; 
    try { 
     doc = document.getElementById("myXml").XMLDocument.documentElement.childNodes.length; 
     alert('msg =' + doc); 
     //i need child nodes to iterate and show values, 
    } catch (ex) { 
     alert("problems to load xml" + doc); 
     throw ex; 
    } 
} 

эти работы отлично с ie6,7,8.

но с с ie9 нет.

свойство XMLDocument не определено,

спасибо,

+0

пардон, мой xml вызывается в html-документ – jrey

+2

Я думаю, вы забыли упомянуть о конкретной проблеме. Вы пробовали это на IE9? Разве это не работает? Как? Любая ошибка? Любой неожиданный результат? –

ответ

1

следующее казалось прекрасным в современных браузерах

function readBooks() { 
     var doc; 
     try { 
      doc = document.getElementById("myXml") 
      alert('msg =' + doc.childNodes.length); 
      for (var i = 0; i < doc.childNodes.length; i++) { 
      if(doc.childNodes[i].tagName && doc.childNodes[i].tagName.toUpperCase() == "BOOKSTORE") { 

       for (var j = 0; j < doc.childNodes[i].childNodes.length; j++) { 
        if (doc.childNodes[i].childNodes[j].tagName && doc.childNodes[i].childNodes[j].tagName.toUpperCase() == "BOOK") { 
         var book = doc.childNodes[i].childNodes[j]; 
         alert(book.getAttribute("category")); 
         alert(getNodeValue(book.getElementsByTagName("title")[0])); 
         alert(getNodeValue(book.getElementsByTagName("author")[0])); 
         alert(getNodeValue(book.getElementsByTagName("year")[0])); 
         alert(getNodeValue(book.getElementsByTagName("price")[0])); 
        } 
       } 
      } 
      } 
     } catch (ex) { 
      alert("problems to load xml" + doc); 
      throw ex; 
     } 
    } 

    function getNodeValue(node) { 

     if (node.text) 
      return node.text; 
     return node.innerHTML; 
    } 
Смежные вопросы