InnerText для замены <br>пробелом - PullRequest
0 голосов
/ 08 апреля 2019

Я пытался найти встроенное решение / настройку в HtmlAgilityPack.

У меня возникают некоторые проблемы, когда внутри родительского узла есть <br>.Другие узлы также, но я использовал <br> для этого вопроса.См. Пример ниже.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<p>This is a<br>test</p>");

var text = doc.DocumentNode.SelectNodes("//p");

foreach (var i in text)
{
  Console.WriteLine(i.InnerText);
}

Это дает следующий результат

This is atest

Я ищу решение, которое дает этот результат

This is a test

Есть ли настройка Iможно использовать для замены узлов <br> пробелом в свойстве InnerText или я вынужден выполнить текст Replace("<br>"," ") перед загрузкой в ​​HtmlDocument?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Вы пробовали это, я думаю, что предоставление места до / после
должно дать вам желаемый результат.

<p>This is a <br> test</p>
0 голосов
/ 08 апреля 2019

Полагаю, вы могли бы сделать что-то подобное.

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//br"))
    node.ParentNode.ReplaceChild(doc.CreateTextNode(" "), node);

Выбирает узлы <br> и заменяет их текстовыми узлами, содержащими пробел. Вы даже можете использовать символ новой строки, если хотите сохранить разрыв строки.

...