使用HTML Agility Pack替换HTML div InnerText标记
我正在使用HTML Agility Pack来操作和编辑HTML文档。 我想更改字段中的文本,例如:
Some text here.
我希望更新此div中的文本:
Some other text.
我尝试使用以下代码执行此操作,但它似乎没有工作,因为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.";