Modifica tag InnerText con HTML AGILITY PACK

c# html html-agility-pack

Domanda

Sto usando HTML Agility Pack e sto cercando di sostituire l'InnerText di alcuni Tag come questo

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);

}

l'html:

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);

}

Risposta accettata

Le stringhe sono immutabili (dovresti riuscire a trovare molta documentazione su questo).
I metodi della classe String non alterano l'istanza, ma piuttosto creano una nuova stringa modificata.

Quindi, la tua chiamata a:

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

non altera InnerText, ma restituisce la stringa che vuoi che sia InnerText.

Inoltre, InnerText è di sola lettura; dovrai usare Testo come sembra in Set InnerText con HtmlAgilityPack

Prova invece la seguente riga (assegna nuovamente il risultato dell'operazione stringa alla proprietà):

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

Risposta popolare

Sono stato in grado di ottenere il risultato in questo modo:

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché