Разбор табличных данных ячейки с пробелом, где есть тэг - PullRequest
0 голосов
/ 03 апреля 2010

Я анализирую табличную информацию html с помощью пакета html agility . Теперь сначала я нахожу строки в этой таблице, как

var rows = table.Descendants("tr");

тогда я нахожу данные ячейки для каждой строки, как

foreach(var row in rows)
{
     string rowInnerText = row.InnerText;
}

Это дает мне данные ячейки. Но без пробелов между ними, как NameAdressPhone No , но я хочу, чтобы внутренний текст, такой как Имя Адрес Телефон № означает, где есть тд Я хочу оставить там один пробел между разными ячейками столбца .

1 Ответ

1 голос
/ 03 апреля 2010

Вот идея, однако полностью не проверенная:

var rows = table.Descendants("tr").Select(tr =>
    string.Join(" ", tr.Descendants("td").Select(td => td.InnerText).ToArray()));

Это должно дать вам IEnumerable<string>, где каждый содержащийся элемент представляет одну строку из таблицы в формате, описанном в вашем вопросе. Если вам действительно нужен ваш цикл над строками для другой обработки, сохраните ваш цикл foreach и используйте магию LINQ в его теле:

var rows = table.Descendants("tr");

foreach (var row in rows)
{
     string rowInnerText = string.Join(" ",
         row.Descendants("td").Select(td => td.InnerText).ToArray());
}
...