2012-02-16 52 views
1

進出口使用HTML敏捷性包,和我試着去更換的innerText一些標籤像這樣的更改標記的innerText與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); 

} 

的HTML:

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

回答

5

字符串是不可變的(你應該能夠找到這方面的文檔)。
String類的方法不會改變實例,而是創建一個新的,修改過的字符串。

因此,您的通話:

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

不會改變的innerText,但返回你想要的innerText爲字符串。

另外,InnerText是隻讀的;你必須爲似乎Set InnerText with HtmlAgilityPack

請嘗試以下行(再次指定字符串操作屬性的結果)使用短信:

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

我試過了,但是我收到了HtmlAgilityPack.InnerText它只是準備好了 – 2012-02-16 13:23:23

+0

對不起 - InnerText是隻讀的。改爲嘗試文字。 – Matthias 2012-02-16 13:25:27

1

我能夠得到這樣的結果:

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