HtmlAgilityPack как убрать пробелы

276
02 июля 2017, 12:19

Текст парсится в хаотичном порядке, одно слово на первой строке, второе на 2 и т.д. В оригинале это все идет в одну строку с небольшим отступом. Как убрать все пробелы и сделать нормальный вывод текста? c#

Answer 1

Как я понял, нужно выбрать и объединить содержимое текстовых узлов.

var sb = new StringBuilder();
foreach (var node in htmlDoc.DocumentNode.Descendants().OfType<HtmlTextNode>())
    if (!string.IsNullOrWhiteSpace(node.Text))
        sb.Append(node.Text.Trim()).Append(' ');
sb.Remove(sb.Length - 1, 1);

Вариант с LINQ:

var textNodes = htmlDoc.DocumentNode
    .Descendants()
    .OfType<HtmlTextNode>()
    .Select(n => n.Text.Trim())
    .Where(s => !string.IsNullOrWhiteSpace(s));
var result = string.Join(" ", textNodes);

Вместо DocumentNode возьмите нужный узел.

Возможно, Trim не нужен (зависит от содержимого). Возможно, не нужны проверки IsNullOrWhiteSpace (также зависит от содержимого).

READ ALSO
SWIG - c# - обертка для enum

SWIG - c# - обертка для enum

Не могу сделать C# обертку для enum C++ c помощью SWIGЗначение членов c++ enum, которые я хочу обернуть превосходят максимальное значение для Int32

219
Aes дешифрация байтов c#

Aes дешифрация байтов c#

Пытаюсь расшифровать зашифрованные байты алгоритмом AES, c#

387
Не определяется свойство зависимости в wpf?

Не определяется свойство зависимости в wpf?

Разбираюсь со свойствами зависимостиКак я понял, что бы создать свойство зависимости необходимо проделать следующие шаги (сейчас буду их сравнивать...

275
Нанооптимизация в цикле for

Нанооптимизация в цикле for

Например, есть массив с элементами

268