2012-02-01 86 views
6

我正在使用HTML Agility Pack來操作和編輯HTML文檔。我想改變在該領域的文本,如本:使用HTML Agility Pack替換HTML div InnerText標記

<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是一個只讀字段,雖然它是寫在文檔中的「獲取或設置」。有沒有其他方法可以做到這一點?

回答

9

表達用在這裏://div[@id='Div1']選擇div,這不是一個HtmlTextNode,所以hNode變量在您的示例保持null

InnerText屬性是realy只讀,但HtmlTextNode有屬性Text可用於設置必要的值。但在此之前,您應該獲取該文本節點。這可以通過以下表達式容易地完成://div[@id='Div1']//b//text()

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

工程就像一個魅力!非常感謝... – Vivek 2012-02-02 04:55:49