Изменить тег InnerText с HTML AGILITY PACK

c# html html-agility-pack

Вопрос

Я использую HTML Agility Pack, и я пытаюсь заменить InnerText на некоторые теги, подобные этому

protected void GerarHtml()
{
    List<string> labels = new List<string>();

    string patch = @"C:\EmailsMKT\" + 
                              Convert.ToString(Session["ssnFileName"]) + ".html";

     DocHtml.Load(patch);

     //var titulos = DocHtml.DocumentNode.SelectNodes("//*[@class='lblmkt']");

     foreach (HtmlNode titulo in
              DocHtml.DocumentNode.SelectNodes("//*[@class='lblmkt']"))
     {
          titulo.InnerText.Replace("test", lbltitulo1.Text);
     }

     DocHtml.Save(patch);

}

html:

<.div><.label id="titulo1" class="lblmkt">teste</label.><./Div>

Принятый ответ

Строки неизменяемы (вы должны найти много документации по этому вопросу).
Методы класса String не изменяют экземпляр, а создают новую, измененную строку.

Таким образом, ваш звонок:

titulo.InnerText.Replace("test", lbltitulo1.Text);

не меняет InnerText, но возвращает строку, в которой вы хотите InnerText.

Кроме того, InnerText доступен только для чтения; вам придется использовать Text как показано в Set InnerText с помощью HtmlAgilityPack

Вместо этого попробуйте использовать следующую строку (снова присвойте результат операции с строкой):

titulo.Text = titulo.Text.Replace("test", lbltitulo1.Text);

Популярные ответы

Я смог получить результат следующим образом:

HtmlTextNode Hnode = null;
Hnode = DocHtml.DocumentNode.SelectSingleNode("//label[@id='titulo1']//text()") as HtmlTextNode;
Hnode.Text = lbltitulo1.Text;


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему