最近有个前端的需求: 解析后台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>
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐