javascript-処理XML

8906 ワード

 1 /**
 2  * Created by Administrator on 2015/4/4.
 3  */
 4 
 5 var XmlUtil=(function () {
 6     var createDocument= function () {
 7         if(typeof arguments.callee.activeXString !='string'){
 8             var versions=['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.3.0','MSXML2.DOMDocument'],
 9                 i,len;
10             for(i=0,len=versions.length;i<len;i++){
11                 try{
12                     new ActiveXObject(versions[i]);
13                     arguments.callee.activeXString=versions[i];
14                     break;
15                 }catch (e){
16                     //  
17                 }
18             }
19         }
20         return new ActiveXObject(arguments.callee.activeXString);
21     };
22     return {
23         // xml       XMLDOM  
24         parseXML:function(xml){
25             var xmldom=null;
26             if(DOMParser != 'undefined'){
27                 var domparser=new DOMParser();
28                 xmldom= domparser.parseFromString(xml,'text/xml');
29                 var errorElment=xmldom.getElementsByTagName('parsererror');
30                 if(errorElment.length>0){
31                     throw new Error('XML PARSER ERROR:'+errorElment[0].textContent);
32                 }
33             }else if(typeof ActiveXObject != 'undefined'){
34                 xmldom=createDocument();
35                 xmldom.loadXML(xml);
36                 if(xmldom.parseError != 0){
37                     throw new Error('XML PARSING ERROR:'+xmldom.parseError.reason);
38                 }
39             }else{
40                 throw new Error('NO XML PARSER AVAILABLE');
41             }
42             return xmldom;
43         },
44         // xmldom      xml  
45         serializeXml:function(xmldom){
46             if(typeof  XMLSerializer !='undefined'){
47                 return new XMLSerializer().serializeToString(xmldom);
48             }else if(typeof xmldom.xml !='undefined'){
49                 return xmldom.xml;
50             }else{
51                 throw  new Error('Could not serialize xml dom');
52             }
53         }
54     }
55 
56 }());
 
 
使い方
1 var xmldom=XmlUtil.parseXML('<root><child/></root>');
2 console.log(xmldom);
3 console.log(XmlUtil.serializeXml(xmldom));