读书人

firefox兼容ie读取xml节点步骤的解决方

发布时间: 2012-10-26 10:30:59 作者: rapoo

firefox兼容ie读取xml节点方法的解决方案实例

<html><head><title>Firefox中Javascript读取XML数据selectSingleNode实例</title><style>body,p{font:normal 12px/180% "宋体";}</style><script type="text/javascript">var GetNodeValue = function(obj){var str = "";if(window.ActiveXObject)    //IE{str = obj.text;}else //Mozilla{try{   str = obj.childNodes[0].nodeValue;}catch(ex){   str = "";}}return str;}if(document.implementation && document.implementation.createDocument){XMLDocument.prototype.loadXML = function(xmlString){var childNodes = this.childNodes;for (var i = childNodes.length - 1; i >= 0; i--)   this.removeChild(childNodes[i]);var dp = new DOMParser();var newDOM = dp.parseFromString(xmlString, "text/xml");var newElt = this.importNode(newDOM.documentElement, true);this.appendChild(newElt);};// check for XPath implementationif( document.implementation.hasFeature("XPath", "3.0") ){    // prototying the XMLDocument    XMLDocument.prototype.selectNodes = function(cXPathString, xNode)    {    if( !xNode ) { xNode = this; }    var oNSResolver = this.createNSResolver(this.documentElement)    var aItems = this.evaluate(cXPathString, xNode, oNSResolver,        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)    var aResult = [];    for( var i = 0; i < aItems.snapshotLength; i++)    {    aResult[i] = aItems.snapshotItem(i);    }    return aResult;    }    // prototying the Element    Element.prototype.selectNodes = function(cXPathString)    {    if(this.ownerDocument.selectNodes)    {    return this.ownerDocument.selectNodes(cXPathString, this);    }    else{throw "For XML Elements Only";}    }}// check for XPath implementationif( document.implementation.hasFeature("XPath", "3.0") ){    // prototying the XMLDocument    XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode)    {    if( !xNode ) { xNode = this; }    var xItems = this.selectNodes(cXPathString, xNode);    if( xItems.length > 0 )    {    return xItems[0];    }    else    {    return null;    }    }      // prototying the Element    Element.prototype.selectSingleNode = function(cXPathString)    {      if(this.ownerDocument.selectSingleNode)    {    return this.ownerDocument.selectSingleNode(cXPathString, this);    }    else{throw "For XML Elements Only";}    }}}function loadXML(){    var xmlHttp;    var name;    if(window.ActiveXObject)    {        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    }    else if(window.XMLHttpRequest)    {        xmlHttp = new XMLHttpRequest();    }    try    {        xmlHttp.onreadystatechange = function()        {            if(xmlHttp.readyState == 4)            {                if (xmlHttp.status == 200)                {                    // 取得XML的DOM对象                    var xmlDOM = xmlHttp.responseXML;                    // 取得XML文档的根                    var root = xmlDOM.documentElement;                    try                    {                       var items = root.selectNodes("//urlset/url");   var msg = document.getElementById("msg1");   msg.innerHTML="";                       for(var i=0;i<items.length;i++)   {                        //取得XML文件中内容                        var strloc = GetNodeValue(items[i].selectSingleNode("loc"));                        var strsite=GetNodeValue(items[i].selectSingleNode("site"));                        var straddtime=GetNodeValue(items[i].selectSingleNode("addtime"));                        msg.innerHTML+="<a href="+strloc+" target=_blank>"+strsite+"</a> 加入日期:"+straddtime+"<br/>";                       }                    }                    catch(exception)                    {                        alert("error!");                    }                }            }        }        xmlHttp.open("GET", "urllink.xml", true);        xmlHttp.send(null);    }    catch(exception)    {      alert("您要访问的资源不存在!");    }}var xmlDoc;function getdata(){   if (window.ActiveXObject)   { //IE  xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  xmlDoc.async=false;  xmlDoc.load("urllink.xml");  domsg();  }  else if (document.implementation &&document.implementation.createDocument)   {//FF  xmlDoc= document.implementation.createDocument("","",null);   xmlDoc.async=false;  xmlDoc.load("urllink.xml");  xmlDoc.onload=domsg();  }  else  {alert('浏览器不支持脚本,无法加载XML文件');  }  }function domsg(){var root = xmlDoc.documentElement;    try{        var msg2 = document.getElementById("msg2");    var items = root.selectNodes("//urlset/url");msg2.innerHTML="";for(i=0;i<items.length;i++){   var strloc = GetNodeValue(items[i].selectSingleNode("loc"));   var strsite=GetNodeValue(items[i].selectSingleNode("site"));   var straddtime=GetNodeValue(items[i].selectSingleNode("addtime"));   msg2.innerHTML+="<a href="+strloc+" target=_blank>"+strsite+"</a> 加入日期:"+straddtime+"<br/>";} } catch (exception){   msg2.innerHTML="加载XML数据错误!"; }  }</script></head><body onload="getdata()"><h1>这是一个firefox兼容ie读取xml节点方法的解决方案实例</h1><div style="margin:10px auto"><h2>这里是实时读取xml文件节点</h2>可以用于Html文件读取 XML中的最新数据、广告数据等。<div id="msg2" style="width:500px;border:1px solid #e0e0e0; height:auto;margin:8px;padding:4px"><span>如果您看到这些内容,说明加载失败</span></div></div><div style="margin:10px auto"><h2>这里是ajax异步读取xml文件节点</h2>firefox模拟selectsinglenode方法获取xml数据,兼容ie,解决了一些一些网站的ajax在firefox下面无法显示的问题<br><a href="javascript:loadXML();" ><B>点击加载XMl</B></a>:<br><div id="msg1" style="width:500px;;border:1px solid #e0e0e0; height:auto;margin:8px;padding:4px">请点击上面按钮加载XMl...</div></div>查看本页源代码,有相应的js, XML数据文件urllink.xml<br><textarea name="urllink" rows="6" cols="60"><?xml version="1.0" encoding="gb2312"?><urlset><url><site>思高数码</site><loc>http://www.cycoo.com</loc><addtime>2006-02-11</addtime></url><url><site>深南大道</site><loc>http://bbs.szroad.com</loc><addtime>2006-05-22</addtime></url><url><site>芒果网</site><loc>http://www.man-go.cn</loc><addtime>2007-01-21</addtime></url></urlset></textarea></body></html>

?

<?xml version="1.0" encoding="gb2312"?><urlset><url><site>思高数码</site><loc>http://www.cycoo.com</loc><addtime>2006-02-11</addtime></url><url><site>深南大道</site><loc>http://bbs.szroad.com</loc><addtime>2006-05-22</addtime></url><url><site>芒果网</site><loc>http://www.man-go.cn</loc><addtime>2007-01-21</addtime></url></urlset>

?

读书人网 >XML SOAP

热点推荐