- То же, что и полный HTML-документ. Это не имеет значения.
- Существует 2 варианта: вы можете редактировать свойство
InnerHtml
напрямую (или Text
на текстовых узлах) или изменять дерево dom, используя, например, AppendChild
, PrependChild
и т. Д.
- Вы можете использовать свойство
HtmlDocument.DocumentNode.OuterHtml
или метод HtmlDocument.Save
(лично я предпочитаю второй вариант).
Что касается разбора, я выбираю текстовые узлы, которые содержат поисковый термин внутри вашего div
, а затем просто использую метод string.Replace
для его замены:
var doc = new HtmlDocument();
doc.LoadHtml(html);
var textNodes = doc.DocumentNode.SelectNodes("/div/text()[contains(.,'specialSearchWord')]");
if (textNodes != null)
foreach (HtmlTextNode node in textNodes)
node.Text = node.Text.Replace("specialSearchWord", "<a class='special' href='http://mysite.com/search/specialSearchWord'>specialSearchWord</a>");
И сохранение результата в строку:
string result = null;
using (StringWriter writer = new StringWriter())
{
doc.Save(writer);
result = writer.ToString();
}