从jquery中的xml doc检索不同的属性

时间:2011-09-06 16:49:45

标签: jquery xml

在xml文档中,我想用jQuery检索元素“product”的“name”属性的不同属性值,删除重复项。

但是,我没有使用unique()函数或创建数组取得任何成功,如本讨论中所述: How to use jQuery to select XML nodes with unique text content?

任何帮助都将受到热烈欢迎。 非常感谢你。

我的XML:

<products>
    <product name="first"></product>
    <product name="second"></product>
    <product name="first"></product>
    <product name="first"></product>
</products>

我没有工作的代码:

function getName() {

    $.ajax({
        type: "GET",
        url: xmlFile.xml,
        dataType: "xml",
        success: function(xml) {
            $(xml).find('product').each(function(){

                        var name = $(this).attr('name');
                        var productArray = new Array();
                        if( jQuery.inArray(name, productArray) == -1 ){
                            $('<p></p>').html(name).appendTo('body');
                            productArray.push(name);
                        }
            });
        }
    });
}

2 个答案:

答案 0 :(得分:5)

productArray是针对product元素的每次迭代定义的gettin,因此inArray总是返回-1。

将productArray的定义移到每个循环之外,即:

function getName() {
        $.ajax({
            type: "GET",
            url: xmlFile.xml,
            dataType: "xml",
            success: function(xml) {
                        var productArray = new Array();
                $(xml).find('product').each(function(){

                            var name = $(this).attr('name');
                            if( jQuery.inArray(name, productArray) == -1 ){
                                $('<p></p>').html(name).appendTo('body');
                                productArray.push(name);
                            }
                });
            }
        });
    }

答案 1 :(得分:1)

我想到的第一个想法......您是否尝试过设置var“productArray”全局?我的意思是,在你的“每个”功能体外?我怀疑每次代码到达该点时都会重置productArray,因此它永远不会包含重复的条目。