vue js读取xml文件并转为对象

1
2
3
4
5
6
7
<?xml version='1.0' encoding='utf-8'?>
<root>
        <name>张三</name>
        <age>18</age>
        <sex>男</sex>
        <birthday>2020-12-02</birthday>
</root>

代码处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
GetxmlTosData(xmlString){<!-- -->
                var xmlDoc=null;
                if(!window.DOMParser && window.ActiveXObject){<!-- --> //window.DOMParser 判断是否是非ie浏览器
                    var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
                    for(var i=0;i<xmlDomVersions.length;i++){<!-- -->
                        try{<!-- -->
                        xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                        xmlDoc.async = false;
                        xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                        break;
                        }catch(e){<!-- -->
                        }
                    }
                }else if(window.DOMParser && document.implementation && document.implementation.createDocument){<!-- -->
                    try{<!-- -->
                        /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
                        * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
                        * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
                        * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
                        */
                        domParser = new DOMParser();
                        xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
                    }catch(e){<!-- -->
                       
                    }
                }else{<!-- -->
                    return null;
                }
               
                xmldata = {<!-- -->};
               
                if(xmlDoc != null){<!-- -->
                    var con = xmlDoc.childNodes[0].childElementCount
                    for(var i=0;i<con;i++){<!-- -->
                        xmldata[xmlDoc.childNodes[0].children[i].tagName] = xmlDoc.childNodes[0].children[i].textContent
                    }
                }
               
                return xmldata;
            }
            /*
                结果为:
                {
                    name:张三,
                    age:18,
                    sex:男,
                    birthday:2020-12-02
                }  
            */