Html Agility Pack/C#:如何创建/替换标签?

Posted

技术标签:

【中文标题】Html Agility Pack/C#:如何创建/替换标签?【英文标题】:Html Agility Pack/C#: how to create/replace tags? 【发布时间】:2011-09-26 06:39:53 【问题描述】:

任务很简单,但我找不到答案。

使用 Node.Remove() 可以轻松删除标签(节点)...但是如何替换它们呢?

有一个 ReplaceChild() 方法,但它需要创建一个新标签。如何设置标签的内容? Innerhtml 和 OuterHtml 是只读属性。

【问题讨论】:

【参考方案1】:

您确定 InnerHtml 是只读属性吗?

HTMLAgility 包的文档另有说明:(剪切和粘贴)

Gets or Sets the HTML between the start and end tags of the object.

Namespace:  HtmlAgilityPack
Assembly:  HtmlAgilityPack (in HtmlAgilityPack.dll) Version: 1.4.0.0 (1.4.0.0)
Syntax
C# 
public virtual string InnerHtml  get; set; 

如果它是只读的,您可以发布一些代码吗?

【讨论】:

【参考方案2】:

查看这段代码sn-p:

public string ReplaceTextBoxByLabel(string htmlContent) 

  HtmlDocument doc = new HtmlDocument();
  doc.LoadHtml(htmlContent);

  foreach(HtmlNode tb in doc.DocumentNode.SelectNodes("//input[@type='text']"))
  
    string value = tb.Attributes.Contains("value") ? tb.Attributes["value"].Value : " ";
    HtmlNode lbl = doc.CreateElement("span");
    lbl.InnerHtml = value;

    tb.ParentNode.ReplaceChild(lbl, tb);
  

  return doc.DocumentNode.OuterHtml;

【讨论】:

以上是关于Html Agility Pack/C#:如何创建/替换标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Html Agility Pack 使请求超时

如何在 Html Agility 包中获取重定向 URL

HTML Agility Pack 条带标签不在白名单中

HTML Agility Pack - 使用 Align=left 样式从 DIV 获取文本

csharp Html Agility Pack #CSharp #HtmlParsing

Html Agility Pack:查找评论节点