Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set InnerText with HtmlAgilityPack

I've tried to set InnerText using the following, but I'm not allowed to set the InnerText property:

node.InnerText = node.InnerText.Remove(100) + ".."; 

The reason for this is that I only want to remove text, not actual elements:

<div>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <img src="" />
</div>
like image 448
Andreas Avatar asked Oct 01 '10 10:10

Andreas


1 Answers

I have just run into the same problem myself. Although the documentation says get or set it clearly is read-only. But inner text applies to EVERYTHING between the tags. So if you have hundred of children ALL of their text including actual tags will be there. I think to do what you and I are wanting we need to use the Text property. Get the actual tag and use the Text property.

So perhaps

HtmlTextNode.Text = "";

Please note that you can only set the text if it is of type HtmlTextNode.

or i think you might get a better result if you just remove the tag and keep the grandchildren.

HtmlNode.Parent.Remove(textTagYouWantRemoved, true);
like image 157
uriDium Avatar answered Sep 28 '22 08:09

uriDium