таблица синтаксического анализа html

c# html-agility-pack

Вопрос

У меня есть таблица вроде этого:

<table border="0" cellpadding="0" cellspacing="0" id="table2">
    <tr>
        <th>Name
        </th>
        <th>Age
        </th>
    </tr>
        <tr>
        <td>Mario
        </td>
        <th>Age: 78
        </td>
    </tr>
            <tr>
        <td>Jane
        </td>
        <td>Age: 67
        </td>
    </tr>
            <tr>
        <td>James
        </td>
        <th>Age: 92
        </td>
    </tr>
</table>

и я использую html agility pack для его анализа. Я пробовал этот код, но он не возвращает ожидаемых результатов: Вот код:

foreach (HtmlNode tr in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr"))
            {
                //looping on each row, get col1 and col2 of each row
                HtmlNodeCollection tds = tr.SelectNodes("td");
                for (int i = 0; i < tds.Count; i++)
                {
                    Response.Write(tds[i].InnerText);
                }
            }

Я получаю каждый столбец, потому что хотел бы обработать содержимое возвращаемого содержимого.

Что я делаю не так?

Популярные ответы

Вы можете захватить содержимое ячейки внутри вашего внешнего цикла foreach:

foreach (HtmlNode td in doc.DocumentNode.SelectNodes("//table[@id='table2']//tr//td"))  
{  
    Response.Write(td.InnerText);   
}  

Также я бы рекомендовал обрезку и «деактивировать внутренний текст, чтобы убедиться, что он чист:

Response.Write(HtmlEntity.DeEntitize(td.InnerText).Trim())

В вашем источнике ячейки для [Возраст: 78] и [Возраст: 92] имеют <th> в начале вместо <td>



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow