.NET Core: заменить текст в htmlC#

Место общения программистов C#
Ответить
Anonymous
 .NET Core: заменить текст в html

Сообщение Anonymous »

Мне нужно выполнить массовый поиск и замену нескольких HTML-текстов (сгенерированных kendo WYSIWYG) в моей базе данных. Итак, я ищу функцию в своем внутреннем ядре dotnet, которая будет искать и заменять текст в HTML, например этот . С входными параметрами найдите как и замените параметр как >foobar< .В настоящее время я использую регулярное выражение для поиска и замены текста в HTML-контенте из WYSIWYG Kendo Editor в основном приложении dotnet. Ниже приведен фрагмент моего подхода, который включает в себя кодирование HTML-объектов и динамическое построение шаблонов регулярных выражений на основе искомого текста:

Код: Выделить всё

/// This method only makes sure that we can also search and replace special html chars like `` which are represented in html as `<` and `>`.
public static string SimpleEncodeHtml(string text)
{
// Encoding HTML special characters
var replacements = new Dictionary
{
{'', ">"},
// additional entities...
};

StringBuilder sb = new StringBuilder();

foreach (char c in text)
{
if (replacements.ContainsKey(c))
sb.Append(replacements[c]);
else
sb.Append(c);
}

return sb.ToString();
}

public static string FindAndReplace(string html, string search, string replace)
{
// Encoding the search and replace strings
search = SimpleEncodeHtml(search);
replace = SimpleEncodeHtml(replace);

// Building regex pattern to consider HTML tags
string pattern = String.Join("(]+>)*", search.ToCharArray());
return Regex.Replace(html, pattern, replace, RegexOptions.IgnoreCase);
}
Я протестировал это со сложными структурами HTML, включая вложенные элементы и смешанный контент, и, похоже, это работает. Однако меня не устраивает этот подход, и меня также беспокоит надежность использования регулярных выражений для манипулирования HTML из-за потенциальных крайних случаев, которые я, возможно, не предвидел. Пока что все предлагают использовать HtmlAgilityPack, но я понятия не имею, как это сделать.

Код: Выделить всё

Our <t[b]e[/b]stovacíte[/b]xt> is split here.
[list]
[*]
First list item

[*]
Second list item with nested <testingtext>

[*]
Third list item

[/list]

This is


<t[i]e[/i]sting[b]t[/b]ext>

at the bottom.


Достаточно ли этот подход надежен для производственных сред?
Каковы потенциальные подводные камни при использовании регулярных выражений для манипулирования текстом HTML?
Было бы целесообразнее использовать для этой цели подходящий анализатор HTML, например HtmlAgilityPack? Если да, не могли бы вы привести пример того, как я мог бы добиться той же функциональности с помощью HtmlAgilityPack?

Подробнее здесь: https://stackoverflow.com/questions/790 ... xt-in-html
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»