jQuery converte tabela HTML em XML
Estou recuperando HTML de um host remoto com o seguinte código jQuery
var loadUrl = "URL.html"; $("#result") .html(ajax_load) .load(loadUrl + " table.schedule");
O que me dá o seguinte HTML
<table class="schedule"> <tr> <th>Name</th> <th>column A</th> <th>column B</th> </tr> <tr> <td>1</td> <td>A1</td> <td>B1</td> </tr> <tr> <tr> <td>2</td> <td>A2</td> <td>B2</td> </tr> </table> <table class="schedule"> <tr> <th>Name</th> <th>column C</th> <th>column D</th> </tr> <tr> <td>3</td> <td>C1</td> <td>D1</td> </tr> <tr> <tr> <td>4</td> <td>C2</td> <td>D2</td> </tr> </table>
O número de TR & TDs pode mudar e eu quero recuperar os dados das colunas A, B, C, D e "transformar" o HTML em um formato de lista como o XML a seguir.
<schedule name="1"> <data>A1</data> <data>A2</data> </schedule> <schedule name="2"> <data>B1</data> <data>B2</data> </schedule> <schedule name="3"> <data>C1</data> <data>C2</data> </schedule> <schedule name="4"> <data>D1</data> <data>D2</data> </schedule>
Eu tentei o código a seguir, que fornece os dados da primeira coluna, mas também concatena todos os TDs de ambas as tabelas em uma lista.
$("#load_get").click(function(){ var xml = "<schedule>"; $("#result") .find("tr").each(function() { xml += "<data>"; xml += $(this).find("td").eq(1).html() + "\n"; xml += "</data>"; } ); xml += "</schedule>"; alert(xml); });
Por favor ajude.
EDITAR
Obrigado Polarblau, Federic & Albert por suas respostas. Eles ajudaram muito, desculpe mudar o objetivo, mas se eu pudesse modificar um pouco o cenário.
É o mesmo HTML, exceto que ele tem um cabeçalho na primeira TR, há duas tabelas e a primeira coluna é ignorada como antes.
<table class="schedule"> <tr> <th>ignore</th> <th>Header1</th> <th>header2</th> </tr> <tr> <td>ignore</td> <td>A1</td> <td>B1</td> </tr> <tr> <td>ignore</td> <td>A2</td> <td>B2</td> </tr> </table> //second table
O XML que eu gostaria de ter, precisa pegar o cabeçalho (TH) e usá-lo no loop TD para definir o atributo name, assim.
<schedule name="Header1"> <data>A1</data> <data>A2</data> </schedule> <schedule name="Header2"> <data>B1</data> <data>B2</data> </schedule> //second table xml
Tentei, sem sucesso, modificar suas soluções para conseguir isso.