【问题标题】:Replacing a HTML div InnerText tag using HTML Agility Pack使用 HTML Agility Pack 替换 HTML div InnerText 标签
【发布时间】:2012-02-24 00:19:07
【问题描述】:

我正在使用 HTML Agility Pack 来操作和编辑 HTML 文档。我想更改字段中的文本,例如:

<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 是一个只读字段,尽管它写在它“获取或设置”的文档中。有没有其他方法可以做到这一点?

【问题讨论】:

    标签: c# asp.net html-parsing html-agility-pack


    【解决方案1】:

    这里使用了表达式://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.";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多