美文网首页
Javascript 对象转换成 XML 字符串的方法

Javascript 对象转换成 XML 字符串的方法

作者: Captain_xu | 来源:发表于2017-07-27 13:25 被阅读0次

Javascript 对象转换 XML 字符串的方法

    
            var _arrayTypes = {}
            var _self = this;
            /*
             *转换对象为xml
             *@obj 目标对象
             *@rootname 节点名称
             *@arraytypes 配置数组字段子元素的节点名称
             */
            this.parseToXML = function (obj, rootname, arraytypes) {
                if (arraytypes) {
                    _arrayTypes = arraytypes;
                }
                var xml = "";
                if (typeof obj !== "undefined") {
                    if (Array.isArray(obj)) {
                        xml += parseArrayToXML(obj, rootname);
                    } else if (typeof obj === "object") {
                        xml += parseObjectToXML(obj, rootname);
                    } else {
                        xml += parseGeneralTypeToXML(obj, rootname);
                    }
                }
                return xml;
            }
            var parseObjectToXML = function (obj, rootname) {
                if (typeof rootname === "undefined" || !isNaN(Number(rootname))) {
                    rootname = "Object";
                }
                var xml = "<" + rootname + ">";
                if (obj) {
                    for (var field in obj) {
                        var value = obj[field];
                        if (typeof value !== "undefined") {
                            if (Array.isArray(value)) {
                                xml += parseArrayToXML(value, field);
                            } else if (typeof value === "object") {
                                xml += _self.parseToXML(value, field);
                            } else {
                                xml += parseGeneralTypeToXML(value, field);
                            }
                        }
                    }
                }
                xml += "</" + rootname + ">";
                return xml;
            }
            var parseArrayToXML = function (array, rootname) {
                if (typeof rootname === "undefined" || !isNaN(Number(rootname))) {
                    rootname = "Array";
                }
                var xml = "<" + rootname + ">";
                if (array) {
                    var itemrootname = _arrayTypes[rootname];
                    array.forEach(function (item) {
                        xml += _self.parseToXML(item, itemrootname);
                    });
                }
                xml += "</" + rootname + ">";
                return xml;
            }
            var parseGeneralTypeToXML = function (value, rootname) {
                if (typeof rootname === "undefined" || !isNaN(Number(rootname))) {
                    rootname = typeof value;
                }
                var xml = "<" + rootname + ">" + value + "</" + rootname + ">";
                return xml;
            }
        }

示例:

  var xmlhelper = new XmlHelper();
        //示例1
        var testobj = {
            field1: "1",
            field2: true,
            field3: {
                a: 123,
                b: 123
            },
            children: [{
                a: 1
            }, {
                a: 2
            }]
        }
        console.log(xmlhelper.parseToXML(testobj, "coreplus-root", {
            children: "menu"
        }));
        //输出:<testobj><field1>1</field1><field2>true</field2><field3><ArrayItem><a>1</a></ArrayItem><ArrayItem><a>2</a></ArrayItem></field3></testobj>
        console.log("================================================");
        //示例2
        var testobj2 = [1, 2, 3];
        console.log(xmlhelper.parseToXML(testobj2, "testobj2"));
        //输出:<testobj2><number>1</number><number>2</number><number>3</number></testobj2>

相关文章

网友评论

      本文标题:Javascript 对象转换成 XML 字符串的方法

      本文链接:https://www.haomeiwen.com/subject/wcszkxtx.html