Используя этот способ, легко преобразовать 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

Я безуспешно пытался изменить ваши решения для достижения этой цели.

 Vivek10 янв. 2011 г., 12:27
да потому что ... вы дали $ (this) .find ("td"). eq (1) .html () .... eq (1) даст вам первую ячейку каждой строки

Ответы на вопрос(1)

Решение Вопроса

Если я правильно понимаю ваш вопрос, вам нужно создать<schedule> элементы внутри вашего цикла:

$("#load_get").click(function() {
    var xml = "";
    $("#result tr").each(function() {
        var cells = $("td", this);
        if (cells.length > 0) {
            xml += "<schedule name='" + cells.eq(0).text() + "'>\n";
            for (var i = 1; i < cells.length; ++i) {
                xml += "\t<data>" + cells.eq(i).text() + "</data>\n";
            }
            xml += "</schedule>\n";
        }
    });
    window.alert(xml);
});
 polarblau10 янв. 2011 г., 12:31
Это, конечно, более элегантно, но не подходит для этих нужд, верно?
 Frédéric Hamidi10 янв. 2011 г., 12:34
@polarblau, вы правы, я не осознавал, что может быть более двух ячеек таблицы. Ответ исправлен, спасибо :)
 SydneyAu12 янв. 2011 г., 03:02
Привет, как я могу изменить атрибут имени, чтобы использовать значение TH, как в моем отредактированном вопросе, спасибо заранее

Ваш ответ на вопрос