【问题标题】:Reading and editing HTML in .Net在 .Net 中阅读和编辑 HTML
【发布时间】:2010-10-02 07:08:18
【问题描述】:

除了 System.Windows.Forms.HtmlDocument 之外,是否还有用于读取和操作 html 的 .Net 类。

如果没有,是否有任何开源库。

【问题讨论】:

  • 这将有助于了解 System.Windows.Forms.HtmlDocument 的问题是什么
  • 使用 System.Windows.Forms 的问题在于它并不真正适合类库或 asp.net 项目。
  • 您还在寻找答案吗?
  • 不,我已经选择了 HtmlAgilityPack codeplex.com/htmlagilitypack,这似乎是最好的选择。

标签: .net html dom


【解决方案1】:

似乎在 .Net 应用程序中解析 Html 的最佳选择是使用 codeplex 上的 Html Agility Pack 库。这提供了对 HTML 的完整 DOM 访问,并且使用起来非常简单。

【讨论】:

    【解决方案2】:

    您可以使用 MSHTML 库。但是,它是 COM/ActiveX,但如果您使用的是 Visual Studio,它会自动为您创建一个托管包装器。

    【讨论】:

    • (非托管)MSHTML 库是否与(托管)System.Windows.Forms.HtmlDocument 相同?
    • 我认为 HtmlDocument 是非托管 MSHTML 的托管包装器......你是说这不是这样?
    【解决方案3】:

    如果它符合 XHTML,我会做这样的事情:

    System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
    xDoc.LoadXml(html);
    

    并以这种方式进行编辑。如果它需要一些清理(XHtml 转换),您可以使用HtmlTidyNtidy。此外,您可以使用下面的 HTMLTidy wrapper 示例:

    string input = "<p>broken html<br <img src=test></div>";
    HtmlTidy tidy = new HtmlTidy()
    string output = tidy.CleanHtml(input, HtmlTidyOptions.ConvertToXhtml);
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(output);
    

    StackOverFlow Reference

    上面的EDIT会被转换成XHtml

    【讨论】:

    • 我想它被否决了,因为这个问题与 XML 无关。
    • 是的,但问题要求提供有关如何操作 HTML 的其他选项! XHTML 只是 XML 中 HTML 的重新表述。
    • 那么他将陷入XML 验证的陷阱以及许多其他事情中,我猜他的措辞会超出他的讨价还价。与其直接操作 HTML,不如建议他“重新制定”它?抱歉,我只是不同意,而且我认为你的 CAPS 有点粗鲁。
    • 重新制定它? XHtML 也是有效的 HTML....因此,通过将 HTML 转换为 XHTML,您不仅可以操作所需的数据,而且可以输出更好的数据....您可能不同意,但这是一个有效的选择。
    • 哦,我没有投反对票。在不确切知道他的目的是什么的情况下,我会说 XHTML 是矫枉过正,更简单地说。
    【解决方案4】:

    您始终可以使用 LiteralControl:

    PlaceHolder.Controls.Add(new LiteralControl("<div>some html</div>"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2011-09-03
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多