HTML Agility Packを使用したHTML div InnerTextタグの置き換え

asp.net c# html-agility-pack html-parsing

質問

HTMLアジャイルパックを使ってHTML文書を操作したり編集したりしています。私はこのようなフィールドのテキストを変更したい:

<div id="Div1"><b>Some text here.</b><br></div>

このdiv内のテキストを次のように更新したいと考えています:

<div id="Div1"><b>Some other text.</b><br></div>

次のコードを使用してこれを実行しようとしましたが、InnerTextプロパティが読み取り専用であるため動作していないようです。

HtmlTextNode hNode = null;
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode;
hNode.InnerText = "Some other text.";
hDoc.Save("C:\FileName.html");

私はここで間違って何をしていますか?上で述べたように、InnerTextは読み込み専用フィールドですが、「取得または設定する」ドキュメントに書かれています。これを行うための別の方法がありますか?

受け入れられた回答

式はここで使用されます: //div[@id='Div1']divを選択します。これはHtmlTextNodeではないため、 hNode変数はあなたの例ではnullを保持します。

InnerTextプロパティは本当に読み取り専用ですが、 HtmlTextNodeは必要な値を設定するためのプロパティTextあります。しかしこれの前に、そのテキストノードを取得する必要があります。これは次の式で簡単に行うことができます: //div[@id='Div1']//b//text()

hNode = hDoc.DocumentNode
    .SelectSingleNode("//div[@id='Div1']//b//text()") as HtmlTextNode;
hNode.Text = "Some other text.";


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow