Javascript загрузить XML из документа с ie9 - PullRequest
1 голос
/ 23 декабря 2011

Каков наилучший способ изменить (без jquery) эти html / javascript для работы с 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 не определено,

спасибо,

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

я решаю эту проблему с Строка в XML, XML в строку

1 голос
/ 23 декабря 2011

в современных браузерах все выглядит нормально

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;
  }
...