Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java脚本名称-值对以未排序的方式存储_Javascript - Fatal编程技术网

Javascript Java脚本名称-值对以未排序的方式存储

Javascript Java脚本名称-值对以未排序的方式存储,javascript,Javascript,我不熟悉java脚本 现有的javascript代码可以读取JSON文档并创建XML。但是xml文档中的元素顺序与JSON文档中的元素顺序不同。 如何做到这一点?目前,java脚本使用树。我用了列表,但没有用。 不确定要使用哪个javascript数据结构,以便它将不按排序顺序/字母顺序存储数据。 高度赞赏任何代码示例 JSON: { "data:xxData": { "xyz": "value", "abc": "order", } } 结果XML: <dat

我不熟悉java脚本

现有的javascript代码可以读取JSON文档并创建XML。但是xml文档中的元素顺序与JSON文档中的元素顺序不同。 如何做到这一点?目前,java脚本使用树。我用了列表,但没有用。 不确定要使用哪个javascript数据结构,以便它将按排序顺序/字母顺序存储数据。 高度赞赏任何代码示例

JSON:
{
  "data:xxData": {
    "xyz": "value",
    "abc": "order",

  }
}
结果XML:

<data:xxData>
    <abc>order</abc>
    <xyz>value</xyz>
</data:xxData>

顺序
价值
应为正确的XML:

 <data:xxData>
    <xyz>value</xyz>
    <abc>order</abc>
 </data:xxData>

价值
顺序
提前谢谢

代码如下:

我通过传递JSON字符串来调用writeXML

    XML.ObjTree.prototype.writeXML = function ( tree ) {
        var xml = this.hash_to_xml( null, tree );
        return this.xmlDecl + xml;
    };


    XML.ObjTree.prototype.hash_to_xml = function ( name, tree ) {
        var elem = [];
        var attr = [];
        for( var key in tree ) {
            print("key: "+ key+'\n')
            //print("tree: "+ tree[key]+'\n')
            if ( ! tree.hasOwnProperty(key) ) continue;
            var val = tree[key];
            if ( key.charAt(0) != this.attr_prefix ) {
                if ( typeof(val) == "undefined" || val == null ) {
                    elem[elem.length] = "<"+key+" />";
                } else if ( typeof(val) == "object" && val.constructor == Array ) {
                    elem[elem.length] = this.array_to_xml( key, val );
                } else if ( typeof(val) == "object" ) {
                    elem[elem.length] = this.hash_to_xml( key, val );
                } else {
                    elem[elem.length] = this.scalar_to_xml( key, val );
                }
            } else {
                attr[attr.length] = " "+(key.substring(1))+'="'+(this.xml_escape( val ))+'"';
            }
        }
        var jattr = attr.join("");
        var jelem = elem.join("");
        if ( typeof(name) == "undefined" || name == null ) {
            // no tag
        } else if ( elem.length > 0 ) {
            if ( jelem.match( /\n/ )) {
                jelem = "<"+name+jattr+">\n"+jelem+"</"+name+">\n";
            } else {
                jelem = "<"+name+jattr+">"  +jelem+"</"+name+">\n";
            }
        } else {
            jelem = "<"+name+jattr+" />\n";
        }
        return jelem;
    };


XML.ObjTree.prototype.array_to_xml = function ( name, array ) {
    var out = [];
    for( var i=0; i<array.length; i++ ) {
        var val = array[i];
        if ( typeof(val) == "undefined" || val == null ) {
            out[out.length] = "<"+name+" />";
        } else if ( typeof(val) == "object" && val.constructor == Array ) {
            out[out.length] = this.array_to_xml( name, val );
        } else if ( typeof(val) == "object" ) {
            out[out.length] = this.hash_to_xml( name, val );
        } else {
            out[out.length] = this.scalar_to_xml( name, val );
        }
    }
    return out.join("");
};

//  method: scalar_to_xml( tagName, text )

XML.ObjTree.prototype.scalar_to_xml = function ( name, text ) {
    if ( name == "#text" ) {
        return this.xml_escape(text);
    } else {
        return "<"+name+">"+this.xml_escape(text)+"</"+name+">\n";
    }
};

//  method: xml_escape( text )

XML.ObjTree.prototype.xml_escape = function ( text ) {
    return (text + '').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
};
XML.ObjTree.prototype.writeXML=函数(树){
var xml=this.hash_to_xml(null,tree);
返回this.xmlDecl+xml;
};
XML.ObjTree.prototype.hash_to_XML=函数(名称,树){
var-elem=[];
var attr=[];
for(树中的变量键){
打印(“键:“+key+”\n”)
//打印(“树:“+tree[key]+'\n')
如果(!tree.hasOwnProperty(key))继续;
var val=树[键];
if(key.charAt(0)!=this.attr_前缀){
if(typeof(val)=“未定义”| | val==null){
元素[元素长度]=“”;
}else if(typeof(val)=“对象”&&val.constructor==数组){
elem[elem.length]=this.array_to_xml(key,val);
}else if(typeof(val)=“对象”){
elem[elem.length]=this.hash_to_xml(key,val);
}否则{
elem[elem.length]=this.scalar_to_xml(key,val);
}
}否则{
attr[attr.length]=“”+(key.substring(1))+“=”+(this.xml_escape(val))+”;
}
}
var jattr=attr.join(“”);
var jelem=elem.join(“”);
if(typeof(name)=“未定义”| | name==null){
//无标签
}否则如果(元素长度>0){
if(jelem.match(/\n/)){
jelem=“\n”+jelem+“\n”;
}否则{
jelem=“”+jelem+“\n”;
}
}否则{
jelem=“\n”;
}
返回杰勒姆;
};
XML.ObjTree.prototype.array_to_XML=函数(名称,数组){
var out=[];
对于(var i=0;i给你:

JSON:
{
  "data:xxData": [
     { "xyz": "value" },
     { "abc": "order" }
    ]
  }
}

您使用的“现有javascript代码”是什么?请提供此代码以便我们修复它。JSON对象中没有顺序。如果您需要任何顺序,您需要自己构建它并保存在某个位置(例如,在数组中)。我用此代码更新了我的原始帖子。非常感谢!(我无法从您的代码中分辨出来,因为您没有为array_to_xml()输入源代码,我在array_to_xml()中添加了array_)到原始帖子。我打印出树内容-它包含数据,但顺序与JSON字符串中的顺序不同。另外,您提到的JSON不是我想要的。您的JSON相关输出如下,但我希望所有元素都包含在一个数据中:xxData。使用JSON:value-ORDER–De输出v 35分钟ago@Dev-我明白了。我看不出有任何方法可以用这个转换代码生成这个xml,因为它会在数组的每个元素周围添加父元素。我不会这样转换为xml。