[js] js 将字符串xml 转成 json对象

来源:互联网 发布:windows集中管理 编辑:程序博客网 时间:2024/04/30 12:48
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>  <title></title>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <meta http-equiv="Content-Language" content="zh-CN" />  <meta name="Keywords" content="" />  <meta name="Description" content="" />  <script src="jQuery.js" type="text/javascript"></script><script>  //解析xml字符串变量为IXMLDOMDocument2 function parseXML(data) {    var xml, tmp;    if (window.DOMParser) { // Standard         tmp = new DOMParser();        xml = tmp.parseFromString(data, "text/xml");    } else { // IE         xml = new ActiveXObject("Microsoft.XMLDOM");        xml.async = "false";        xml.loadXML(data);    }    tmp = xml.documentElement;    if (!tmp || !tmp.nodeName || tmp.nodeName === "parsererror") {        return null;    }    return xml;}//将 IXMLDOMDocument2 转换为JSON,参数为IXMLDOMDocument2对象  function toJson(obj) {    if (this == null) return null;    var retObj = new Object;    buildObjectNode(retObj,    /*jQuery*/    obj);    return retObj;    function buildObjectNode(cycleOBJ,    /*Element*/    elNode) {        /*NamedNodeMap*/        var nodeAttr = elNode.attributes;        if (nodeAttr != null) {            if (nodeAttr.length && cycleOBJ == null) cycleOBJ = new Object;            for (var i = 0; i < nodeAttr.length; i++) {                cycleOBJ[nodeAttr[i].name] = nodeAttr[i].value;            }        }        var nodeText = "text";        if (elNode.text == null) nodeText = "textContent";        /*NodeList*/        var nodeChilds = elNode.childNodes;        if (nodeChilds != null) {            if (nodeChilds.length && cycleOBJ == null) cycleOBJ = new Object;            for (var i = 0; i < nodeChilds.length; i++) {                if (nodeChilds[i].tagName != null) {                    if (nodeChilds[i].childNodes[0] != null && nodeChilds[i].childNodes.length <= 1 && (nodeChilds[i].childNodes[0].nodeType == 3 || nodeChilds[i].childNodes[0].nodeType == 4)) {                        if (cycleOBJ[nodeChilds[i].tagName] == null) {                            cycleOBJ[nodeChilds[i].tagName] = nodeChilds[i][nodeText];                        } else {                            if (typeof(cycleOBJ[nodeChilds[i].tagName]) == "object" && cycleOBJ[nodeChilds[i].tagName].length) {                                cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length] = nodeChilds[i][nodeText];                            } else {                                cycleOBJ[nodeChilds[i].tagName] = [cycleOBJ[nodeChilds[i].tagName]];                                cycleOBJ[nodeChilds[i].tagName][1] = nodeChilds[i][nodeText];                            }                        }                    } else {                        if (nodeChilds[i].childNodes.length) {                            if (cycleOBJ[nodeChilds[i].tagName] == null) {                                cycleOBJ[nodeChilds[i].tagName] = new Object;                                buildObjectNode(cycleOBJ[nodeChilds[i].tagName], nodeChilds[i]);                            } else {                                if (cycleOBJ[nodeChilds[i].tagName].length) {                                    cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length] = new Object;                                    buildObjectNode(cycleOBJ[nodeChilds[i].tagName][cycleOBJ[nodeChilds[i].tagName].length - 1], nodeChilds[i]);                                } else {                                    cycleOBJ[nodeChilds[i].tagName] = [cycleOBJ[nodeChilds[i].tagName]];                                    cycleOBJ[nodeChilds[i].tagName][1] = new Object;                                    buildObjectNode(cycleOBJ[nodeChilds[i].tagName][1], nodeChilds[i]);                                }                            }                        } else {                            cycleOBJ[nodeChilds[i].tagName] = nodeChilds[i][nodeText];                        }                    }                }            }        }    }}</script></head><body style="background:#000;">    <textarea style="width:950px;height: 500px;">      <site>    <id>abc7b4ab46494f0bba6e8e4709c7eaa0</id>    <name>SDK_101简易模板</name>    <author name="[提示:请添加模板作者名称]" url="http://www.yourwebsite.com" wangwang="[提示:请添加模板作者的旺旺]"></author>    <thumbnail>assets/images/default-thumbnail.png</thumbnail>    <language>PHP</language>    <version>1.0.0</version>    <apply-sites>2</apply-sites>    <apply-user>c测试账号154</apply-user>    <template-type>1</template-type>    <sale-type>1</sale-type>    <change-notes>[提示:请添加模板修改日志]</change-notes>    <description>SDK_101简易模板</description>    <global>        <header>header.json</header>        <footer>footer.json</footer>    </global>    <themes default="第一风格">        <theme name="第二风格">            <css>assets/stylesheets/style2/extra.css</css>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>        </theme>        <theme name="第一风格">            <css>assets/stylesheets/style1/extra.css</css>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>        </theme>        <theme name="第三风格">            <css>assets/stylesheets/style3/extra.css</css>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>        </theme>        <theme name="第四风格">            <css>assets/stylesheets/style4/extra.css</css>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>        </theme>    </themes>    <pages>        <page type="index">            <name>首页</name>            <file>index.json</file>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>            <description xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">[提示:请添加首页的描述]</description>        </page>        <page type="detail">            <name>默认宝贝详情页</name>            <file>detail.json</file>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>            <description xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">[提示:请添加默认宝贝详情页的描述]</description>        </page>        <page type="list">            <name>默认宝贝分类页</name>            <file>list.json</file>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>            <description xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">[提示:请添加默认宝贝分类页的描述]</description>        </page>        <page type="other">            <name>自定义页面</name>            <file>other.json</file>            <thumbnail>assets/images/default-thumbnail.png</thumbnail>            <description xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">[提示:请添加自定义页面的描述]</description>        </page>    </pages></site>    </textarea>    <script>    var xml=$('textarea').val();    var j=toJson(parseXML(xml));    alert(     JSON.stringify(j)   );    </script></body></html>

0 0
原创粉丝点击