javascript-处理XML

时间:2023-12-14 20:25:08
 /**
* Created by Administrator on 2015/4/4.
*/ var XmlUtil=(function () {
var createDocument= function () {
if(typeof arguments.callee.activeXString !='string'){
var versions=['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.3.0','MSXML2.DOMDocument'],
i,len;
for(i=0,len=versions.length;i<len;i++){
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch (e){
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
};
return {
//把xml字符串序列化成XMLDOM对象
parseXML:function(xml){
var xmldom=null;
if(DOMParser != 'undefined'){
var domparser=new DOMParser();
xmldom= domparser.parseFromString(xml,'text/xml');
var errorElment=xmldom.getElementsByTagName('parsererror');
if(errorElment.length>0){
throw new Error('XML PARSER ERROR:'+errorElment[0].textContent);
}
}else if(typeof ActiveXObject != 'undefined'){
xmldom=createDocument();
xmldom.loadXML(xml);
if(xmldom.parseError != 0){
throw new Error('XML PARSING ERROR:'+xmldom.parseError.reason);
}
}else{
throw new Error('NO XML PARSER AVAILABLE');
}
return xmldom;
},
//把xmldom对象序列话成xml对象
serializeXml:function(xmldom){
if(typeof XMLSerializer !='undefined'){
return new XMLSerializer().serializeToString(xmldom);
}else if(typeof xmldom.xml !='undefined'){
return xmldom.xml;
}else{
throw new Error('Could not serialize xml dom');
}
}
} }());

用法

 var xmldom=XmlUtil.parseXML('<root><child/></root>');
console.log(xmldom);
console.log(XmlUtil.serializeXml(xmldom));