您的位置:首页 > Web前端 > JavaScript

javascript解析xml字符串的函数

2008-06-01 00:00 771 查看
但是是XML字符串,则在两种浏览器下就会有所不同,IE下可以直接使用LoadXML方法解析XML字符串,而在FF下则要使用DOMParser 对象的parseFromString() 方法即
var oParser=new DOMParser();
xmlDoc=oParser.parseFromString(xmlStr,"text/xml");
为了在两种浏览器中能通用,我想到了javascritp的发生异常的处理方式,就是try...catch...
function toXML(strxml){ 
  try{ 
     xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.loadXML(strxml); 
  } 
  catch(e){ 
     var oParser=new DOMParser(); 
     xmlDoc=oParser.parseFromString(strxml,"text/xml"); 
  } 
  return xmlDoc; 
}



function toXML(strxml){
try{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
//var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.loadXML(strxml);
}
catch(e){
var oParser=new DOMParser();
xmlDoc=oParser.parseFromString(strxml,"text/xml");
}
return xmlDoc;
}
str="1400Default.htm"
var xmlObj=toXML(str);
alert(xmlObj.childNodes[0].firstChild.firstChild.nodeValue);


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
看,不管在ie还是ff中都弹出了1400吧!!
function FormatToXml(strXml){ 
var isIE = function(){ 
  var IE = /msie/i.test(navigator.userAgent); 
  return IE; 
} 
var Exc = function(){ 
  var XmlDoc = null; 
  if (isIE()) 
  { 
   XmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
   XmlDoc.loadXML(strXml); 
  }else{ 
   //FireFox2.0、Safari2.0 
   XmlDoc = (new DOMParser()).parseFromString(strXml, "text/xml"); 
  } 
  return XmlDoc; 
} 
return Exc(); 
}

功能是一样的,都是为了在ie和ff中处理xml字符串的解析问题。不过在无忧上有些人说xml字符串要有<?xml version="1.0" encoding="gb2312"?>,可我测试后若有xml version="1.0" encoding="gb2312"?>,解析结果不一致,所以我上面的例子没有加这些字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: