javascript使用ie9从文档加载xml

时间:2011-12-23 16:36:07

标签: javascript internet-explorer internet-explorer-9 dom

更改(没有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 个答案:

答案 0 :(得分: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;
  }

答案 1 :(得分:1)

我解决了这些问题 String to XML, XML to String