I’m using the HTML Agility Pack to manipulate and edit a HTML document. I want to change the text in the field such as this:
<div id="Div1"><b>Some text here.</b><br></div>
I am looking to update the text within this div to be:
<div id="Div1"><b>Some other text.</b><br></div>
I’ve tried doing this using the following code, but it doesn’t seem to be working because the InnerText property is readonly.
HtmlTextNode hNode = null;
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode;
hNode.InnerText = "Some other text.";
hDoc.Save("C:\FileName.html");
What am I doing wrong here? As mentioned above, the InnerText is a read only field, although it’s written in the documentation that it “gets or sets”. Is there an alternate method through which this can be done?
The expression is used here:
//div[@id='Div1']selects thediv, which is not aHtmlTextNode, so thehNodevariable holdsnullin your example.The
InnerTextproperty is realy read-only, butHtmlTextNodehas propertyTextwhich could be used to set the necessary value. But before this you should get that text node. This could be easily done with this expression://div[@id='Div1']//b//text():