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
Classes >