最近有个前端的需求: 解析后台xml, 并添加删除和修改, 然后传给后台, 思来想去, 最简单的办法就是利用xml和对象互转, 即从后台读取xml传到前台并形成表格(已有代码,或者用对象生成表格), 前台可编辑表格(包括添加,删除),提交时将表格数据存入对象中, 转为json, 再转为xml,最后以字符串形式传给后台写入文件.

逻辑图:

Created with Raphaël 2.1.0 后台 后台 前台 前台 xml->表格 表格->对象->xml->字符串

代码:

<!-- 思路:xml转成表格,操作表格,然后再将表格内容收进对象里,对象转为json再转xml传给后台 -->

<html>
<body>

<script type="text/javascript">
var xml = "<root><first>123</first><second><error>Nothing</error><haha>Something</haha></second></root>";
var parseXMLJSON = {
    parse2json: function(xmlStr){
        var root = document.createElement('XMLROOT');
        root.innerHTML = xmlStr;
        return this.parse(root);
    } ,
    parse: function(node){
        var result = {};
        for(var i = 0 ; i < node.childNodes.length ; ++i){
            if(node.childNodes[i].nodeType==1){
                result[node.childNodes[i].nodeName.toLowerCase()] = this.parse(node.childNodes[i]);
            }else if(node.childNodes[i].nodeType==3){
                return node.childNodes[i].nodeValue;
            }
        }
        return result;
    } ,
    parse2xml: function(data){
        var xmldata = '';
        for(var i in data){
            xmldata+= '<'+i+'>';
            if(typeof data[i]=='object'){
                xmldata+= this.parse2xml(data[i]);
            }else{
                xmldata+= data[i];
            }
            xmldata+= '</'+i+'>';
        }
        return xmldata;
    }
};
var jsonData = parseXMLJSON.parse2json(xml);
var xmlData = parseXMLJSON.parse2xml(jsonData);
alert('xml to json: ' + JSON.stringify(jsonData));
alert('json to xml: ' + xmlData);
</script>

</body>
</html>
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐