使用HTML AGILITY PACK更改Tag InnerText

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是只讀的;你必須使用HtmlAgilityPackSet InnerText中使用Text

請嘗試使用以下行(再次將字符串操作的結果分配給屬性):

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;


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因