Traverse Children of Children从JQuery XML对象返回

时间:2012-08-15 00:10:13

标签: javascript jquery xml dom tree

我正在尝试使用JQuery和AJAX遍历返回的XML文件。而且我正在努力想出如何让孩子的孩子和返回数据。我尝试的一切似乎都不起作用。到目前为止,我可以在DATASET中获得正确数量的孩子,但是当我得到第一个孩子的孩子时,它会返回7个孩子,当应该有3个孩子。有人可以解决这个问题吗?

这是数据

<DATASET>
    <ITEM>
        <COLUMN1>A</COLUMN1>
        <COLUMN2>B</COLUMN2>
        <COLUMN3>C</COLUMN3>
    </ITEM>
    <ITEM>
        <COLUMN1>D</COLUMN1>
        <COLUMN2>E</COLUMN2>
        <COLUMN3>F</COLUMN3>
    </ITEM>
</DATASET>

这是电话

function callAJAX(){
    var request = $.ajax({
        url: "testAjaxData.xml",
        type: "POST",
        data: {id : "paramValue"},
        dataType: "xml"
    });

    request.done(function(xml) {
        var myDoc = "";
        var tree = xml.documentElement.childNodes;

        var $kids = $(xml).find("DATASET").children()
        alert($kids.size());

        $kids.each(function(){
            var tagName=this.tagName;
            alert(tagName + " size: " + childNodes.length);
            for (var i = 0; i < this.childNodes.length; i++) {
                //alert(this.childNodes[i].value)
            }
        });



    });

    request.fail(function(jqXHR, textStatus) {
        alert( "Request failed: " + textStatus );
    });
}

最终我想打印出来像:

Row1: column1=[A] column2=[B] column3=[C] 
Row2: column1=[D] column2=[E] column3=[F] 

1 个答案:

答案 0 :(得分:1)

文本节点包含在childNodes属性中,包括空格,因此子节点之间的空格也很重要。

由于你正在使用jQuery,你可以这样做:

...
$kids.each(function(){
     var tagName=this.tagName;
     var cols = $(this).children();
     alert(tagName + " size: " + cols.length);
     cols.each(function() {
          //alert(this.value)
     });
});
...