我正在使用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>
答案 0 :(得分:5)
字符串是不可变的(你应该可以找到很多文档) String类的方法不会改变实例,而是创建一个新的,修改过的字符串。
因此,您致电:
titulo.InnerText.Replace("test", lbltitulo1.Text);
不会改变InnerText,但会返回你想要InnerText的字符串。
此外,InnerText是只读的;你必须在Set InnerText with HtmlAgilityPack
中使用Text请尝试使用以下行(再次将字符串操作的结果分配给属性):
titulo.Text = titulo.Text.Replace("test", lbltitulo1.Text);
答案 1 :(得分:1)
我能得到这样的结果:
HtmlTextNode Hnode = null;
Hnode = DocHtml.DocumentNode.SelectSingleNode("//label[@id='titulo1']//text()") as HtmlTextNode;
Hnode.Text = lbltitulo1.Text;