Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 用Jquery中的属性值替换节点名称_Javascript_Jquery_Html - Fatal编程技术网

Javascript 用Jquery中的属性值替换节点名称

Javascript 用Jquery中的属性值替换节点名称,javascript,jquery,html,Javascript,Jquery,Html,我有以下xml: <Item name="Alpha"> <Field name="CreationDateTime">2012-04-26</Field> <Field name="Material" readOnly="X"> Congress </Field> </Item> 2012-04-26 国会 我想将其转换为这种格式(注意,节点名称需要替换为相应的属性名称) 2012-04-26 国会

我有以下xml:

<Item name="Alpha">
    <Field name="CreationDateTime">2012-04-26</Field>
    <Field name="Material" readOnly="X"> Congress </Field>
</Item>

2012-04-26
国会
我想将其转换为这种格式(注意,节点名称需要替换为相应的属性名称)


2012-04-26
国会
在jquery中最快的方法是什么。这必须发生在记录数为1000的表中,因此必须是有效的


谢谢

下面的代码使用jQuery的map函数在文档之间进行翻译。它完成了基本的工作,并且可以进一步扩展以满足完整文档的需要

存在的几个问题:

  • 输出中标记的大小写是小写的,我似乎找不到一个简单的解决方案
  • 我不知道它将如何在数千条记录上运行。:)
资料来源:

<script type="text/javascript">
$(function() {
    var XML = 
    '<Item name="Alpha">' +
    '<Field name="CreationDateTime">2012-04-26</Field>' + 
    '<Field name="Material" readOnly="X"> Congress </Field>' +
'</Item>';

$(XML).map(function() {             
    function map() {
        if ($(this).is("Item")) {
            var result = $("<Item>").attr("name", "Alpha");                     
            var children = $(this).children().map(map);


            $(children).each(function() {
                result.append(this);
            });

            return result;
        }

        if ($(this).is("Field")) {
            var name = $(this).attr("name");

            var result = $("<" + name + ">");

            // Transfer other attributes
            $(this.attributes).each(function() {
                if (this.name === "name")
                    return;

                result.attr(this.name, this.value);
            });

            result.text( $(this).text() );
            return result;
        }
    };

    var result = $(XML).map(map);
});
});
</script>

$(函数(){
变量XML=
'' +
'2012-04-26' + 
“国会”+
'';
$(XML).map(函数(){
函数映射(){
如果($(此).is(“项目”)){
var result=$(“”).attr(“名称”,“字母”);
var children=$(this.children().map(map);
$(子项)。每个(函数(){
结果。追加(本);
});
返回结果;
}
如果($(此).is(“字段”)){
var name=$(this.attr(“name”);
变量结果=$(“”);
//转移其他属性
$(this.attributes){
如果(this.name==“name”)
返回;
result.attr(this.name,this.value);
});
result.text($(this.text());
返回结果;
}
};
var result=$(XML).map(map);
});
});

您是否考虑过使用XSLT进行此转换?似乎XSLT就是为了解决这类问题而创建的。
<script type="text/javascript">
$(function() {
    var XML = 
    '<Item name="Alpha">' +
    '<Field name="CreationDateTime">2012-04-26</Field>' + 
    '<Field name="Material" readOnly="X"> Congress </Field>' +
'</Item>';

$(XML).map(function() {             
    function map() {
        if ($(this).is("Item")) {
            var result = $("<Item>").attr("name", "Alpha");                     
            var children = $(this).children().map(map);


            $(children).each(function() {
                result.append(this);
            });

            return result;
        }

        if ($(this).is("Field")) {
            var name = $(this).attr("name");

            var result = $("<" + name + ">");

            // Transfer other attributes
            $(this.attributes).each(function() {
                if (this.name === "name")
                    return;

                result.attr(this.name, this.value);
            });

            result.text( $(this).text() );
            return result;
        }
    };

    var result = $(XML).map(map);
});
});
</script>