Viv*_*vek 6 c# asp.net html-parsing html-agility-pack
我正在使用HTML Agility Pack来操作和编辑HTML文档.我想更改字段中的文本,例如:
<div id="Div1"><b>Some text here.</b><br></div>
Run Code Online (Sandbox Code Playgroud)
我希望更新此div中的文本:
<div id="Div1"><b>Some other text.</b><br></div>
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码执行此操作,但它似乎没有工作,因为InnerText属性是只读的.
HtmlTextNode hNode = null;
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode;
hNode.InnerText = "Some other text.";
hDoc.Save("C:\FileName.html");
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?如上所述,InnerText是一个只读字段,尽管它在文档中写有"获取或设置".有没有其他方法可以做到这一点?
此处使用表达式://div[@id='Div1']选择div不是a 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.";
Run Code Online (Sandbox Code Playgroud)