使用HTML Agility Pack替換HTML div InnerText標記

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

我正在使用HTML Agility Pack來操作和編輯HTML文檔。我想更改字段中的文本,例如:

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

我希望更新此div中的文本:

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

我嘗試使用以下代碼執行此操作,但它似乎沒有工作,因為InnerText屬性是只讀的。

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

我在這做錯了什麼?如上所述,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.";



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