//重构loadXML,解决FireFox等浏览器没有loadXML方法.兼容处理
Document.prototype.loadXML = function(strXML) {
var objDOMParser = new DOMParser();
var objDoc = objDOMParser.parseFromString(strXML, "text/xml"); while (this.hasChildNodes()){this.removeChild(this.lastChild);}
for (var i=0; i < objDoc.childNodes.length; i++) {
var objImportedNode = this.importNode(objDoc.childNodes[i], true);
this.appendChild(objImportedNode);
}
this.onload();
}//End Funciton

解决方案 »

  1.   

    加一点,firefox下读取xml节点的内容用什么方法!nodeValue,value,text我都试了,好像都不行啊!谢谢老大们了!
      

  2.   

    加载顺序问题,最后的节点用nodeValue
    <script>
    var xmlDoc = null;if (window.ActiveXObject)
    {
    xmlDoc =new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.load("./1.xml");
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
    {
    xmlDoc =document.implementation.createDocument("","cd",null);
    xmlDoc.load("./1.xml");
    }
    else
    {
    alert('Your browser cannot handle this script');
    }xmlDoc.onload=function(){
    alert( xmlDoc );
    alert(xmlDoc.documentElement.getElementsByTagName("NodeName")[0].childNodes[0].nodeValue );
    }
    </script>
      

  3.   

    学习了,直接用js操作xml很容易出错,而且也即使不出错也不能保证在别的机器上不出错,因为msxml版本不一样,我一直回避直接这样做改用ajax+json代替了,懒惰了一点,但很可靠.
      

  4.   

    下面是我以前写的,在FF和IE下都可以工作,你参考下
    function createXMLHttpRequest()
    {
    if(window.XMLHttpRequest)
    {
    xmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }function getDisAnimal0()
    {
        var url = "/products/xml/disease_animal.xml";
        var newsItemsDiv = "<ul>"
        var lianimal = 0;
    if(xmlHttp == null)
    {
    createXMLHttpRequest();
    }
    xmlHttp.open("GET", url, true);

        xmlHttp.onreadystatechange = function()
    {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
    {
            var xmldom = xmlHttp.responseXML;    
            if(xmldom != null)
            {
             var species = document.getElementById("speciesAnimal2").value;
             var disSearch = xmldom.getElementsByTagName(species).item(0);
         var dislist = disSearch.childNodes;
    var diseases="";
    var disurl="";
             for(var i=0; i<dislist.length; i++)
    {
    var node=dislist.item(i);
    if(node.tagName == "disname")
    {
       lianimal = lianimal + 1;
       diseases = node.childNodes[0].data;
       disurl = node.attributes.getNamedItem("url").value;
       if(lianimal%2 == 0)
       {
       newsItemsDiv += "<li style='background-color:#f3f3f3;font-size:12px;'><a href=\"javascript:select_proD('" + diseases +"','" + disurl + "');\">" + diseases + "</a></li>";
       }
       else{
       newsItemsDiv += "<li style='font-size:12px;'><a href=\"javascript:select_proD('" + diseases +"','" + disurl + "');\">" + diseases + "</a></li>";
       }
    }
    }
    newsItemsDiv += "<br class='clear' /></ul>";
    var div = document.getElementById("defaultD");
    div.innerHTML = newsItemsDiv;
           }
    }
    }
    xmlHttp.send(null);
    }