Используя этот способ, легко преобразовать HTML-таблицу в XML: -
учаю HTML с удаленного хоста с помощью следующего кода JQuery
var loadUrl = "URL.html"; $("#result") .html(ajax_load) .load(loadUrl + " table.schedule");
Что дает мне следующий 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>
Количество TR & TD может измениться, и я хочу получить данные для столбцов A, B, C, D и «преобразовать» HTML в формат списка, подобный следующему XML.
<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>
Я попробовал следующий код, который предоставляет мне данные первого столбца, но он также объединяет все TD из обеих таблиц в один список.
$("#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); });
Пожалуйста помоги.
РЕДАКТИРОВАТЬ
Спасибо, Polarblau, Federic & Albert за ваши ответы. Они очень помогли, извините, чтобы изменить цель, но если бы я мог немного изменить сценарий.
Это тот же HTML, за исключением того, что он содержит заголовок в первом TR, есть две таблицы и первый столбец игнорируется, как и раньше.
<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
XML, который я хочу получить, должен захватить заголовок (TH) и использовать его в цикле TD, чтобы установить атрибут name, вот так.
<schedule name="Header1"> <data>A1</data> <data>A2</data> </schedule> <schedule name="Header2"> <data>B1</data> <data>B2</data> </schedule> //second table xml
Я безуспешно пытался изменить ваши решения для достижения этой цели.