jQuery将HTML表转换为XML

我正在使用以下jQuery代码从远程主机检索HTML

     var loadUrl =“URL.html”; 
         $( “#结果”)
         html的(ajax_load)
         .load(loadUrl +“table.schedule”);

这给了我以下HTML

 
名称 列A 列B
1 A1 B1
2 A2 B2
名称 列C 列D
3 C1 D1
4 C2 D2

TR和TD的数量可以改变,我想检索A,B,C,D列的数据,并将HTML“转换”成列表格式,如下面的XML。

 
          A1 
          A2 
 
 
          B1 
          B2 
 
 
          C1 
          C2 
 
 
          D1 
          D2 
 

我尝试了以下代码,它为我提供了第一列数据,但它也将两个表中的所有TD连接成一个列表。

 $( “#load_get”)。点击(函数(){
 var xml =“”;
 $( “#结果”)
 .find(“tr”)。each(function(){
 xml + =“”;
 xml + = $(this).find(“td”)。eq(1).html()+“\ n”;  
 xml + =“”;
 });
 xml + =“”;
警报(XML);
 });

请帮忙。

编辑

感谢Polarblau,Federic&Albert的回复。 他们帮助了很多,抱歉改变目标,但如果我可以略微修改方案。

这是相同的HTML,除了它在第一个TR中有一个标题,有两个表,第一列被忽略。

 
忽略 头1 HEADER2
忽略 A1 B1
忽略 A2 B2
//第二张桌子

我希望拥有的XML,需要抓取Header(TH)并在TD循环中使用它来设置name属性,就像这样。

 
          A1 
          A2 
 
 
          B1 
          B2 
 

 //第二个表格xml

我尝试修改您的解决方案以实现此目的,但未成功。

如果我正确理解你的问题,你需要在循环中创建元素:

 $("#load_get").click(function() { var xml = ""; $("#result tr").each(function() { var cells = $("td", this); if (cells.length > 0) { xml += "\n"; for (var i = 1; i < cells.length; ++i) { xml += "\t" + cells.eq(i).text() + "\n"; } xml += "\n"; } }); window.alert(xml); }); 

试试这个:

 $(function(){ var xml = ""; $('tr:not(:first)').each(function(i, tr){ $tr = $(tr); var index = $.trim($tr.find('td:first').text()); xml += ''; $tr.find('td:not(:first)').each(function(j, td){ xml += ''; xml += $.trim($(td).text()); xml += ''; }); xml += ''; }); alert(xml); }); 

这里的例子。

如果你正在使用

你仍然可以进一步简化它。

我会创建一个jQuery对象,而不是连接字符串

 var $xml = $(""); $("tr:has(>td)").each(function() { var $schedule = $(""); $xml.append($schedule); $("td", this).each(function(i) { if(i===0) $schedule.attr("name", $(this).text()); else $schedule.append($("").text($(this).text())); }) }); alert($xml.html()); 

使用这种方式简单的html表转换为xml: –

  
Class 1995 1996 1997
Class1
Class2