HTML AGILITY PACKを使用してタグのInnerTextを変更する

c# html html-agility-pack

質問

私はHTML Agility Packを使用しています。Imはこのようなタグの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:

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

}

受け入れられた回答

文字列は不変です(これに関する多くの文書を見つけることができます)。
Stringクラスのメソッドはインスタンスを変更するのではなく、変更された新しい文字列を作成します。

したがって、あなたの呼び出し:

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

InnerTextを変更するのではなく、InnerTextにする文字列を返します。

さらに、InnerTextは読み取り専用です。あなたは、HtmlAgilityPackでInnerTextを設定するのと同じようにTextを使用する必要があります

代わりに次の行を試してください(文字列操作の結果をプロパティに再度割り当てます)。

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

人気のある回答

私はこのような結果を得ることができました:

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ