Ändern Sie Tag InnerText mit HTML AGILITY PACK

c# html html-agility-pack

Frage

Ich verwende HTML Agility Pack, und ich versuche, den InnerText einiger Tags wie folgt zu ersetzen

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

}

der html:

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

Akzeptierte Antwort

Zeichenfolgen sind unveränderlich (Sie sollten in der Lage sein, viel Dokumentation darüber zu finden).
Methoden der String-Klasse verändern die Instanz nicht, sondern erzeugen eine neue, modifizierte Zeichenkette.

Also, Ihr Anruf an:

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

ändert InnerText nicht, gibt aber die Zeichenfolge zurück, die Innertext sein soll.

Darüber hinaus ist InnerText schreibgeschützt. Sie müssen Text wie in InnerText mit HtmlAgilityPack festgelegt verwenden

Versuchen Sie stattdessen die folgende Zeile (weisen Sie der Eigenschaft das Ergebnis der Zeichenfolgenoperation erneut zu):

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

Beliebte Antwort

Ich konnte das Ergebnis so erhalten:

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


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow