2012-08-15 80 views
2

我想用JQuery和AJAX遍历返回的XML文件。而我正在最困难的时候弄清楚如何让孩子的孩子们返回数据。我所尝试的一切似乎都不起作用。到目前为止,我可以在DATASET中获得正确数量的孩子,但是当我得到第一个孩子的孩子时,它将返回7个孩子,应该有3个孩子。任何人都可以解决这个问题吗?从JQuery XML对象返回的儿童遍历子对象

这里的数据

<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

文本节点包括在childNodes财产包括空白,所以儿童之间的空白也算数。

由于您使用jQuery的,你可以这样做:

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

谢谢!我的问题是没有把$()围绕“this”,当我最初试图通过jquery获得孩子! – Taylor 2012-08-15 14:40:10