【问题标题】:how do you serialize HTML in C#?如何在 C# 中序列化 HTML?
【发布时间】:2010-12-20 02:47:01
【问题描述】:

如何在 C# 中序列化 HTML?

我想我知道如何使用 XSD.exe 从 XML 创建 C# 类,这些类可以与 XmlSerializer 类一起使用来序列化和验证 XML 文档。

有没有办法对 HTML 文档做同样的事情?我试过了,但是 xsd 命令行说远程名称 www.w3.org 无法解析。

至少,有没有办法使用 C# 来确定 HTML 文件是否有效?

【问题讨论】:

    标签: c# html xml


    【解决方案1】:

    HTMLAgilityPack 是一个开源库,可以为您轻松解析 HTML。然后,您可以非常轻松地搜索/操作文档的结构。

    您提供的 HTML 非常宽容,所以我不确定这是否是检查您是否拥有严格的 xHTML 有效文档的好方法。但它应该能够解析任何现代浏览器可以解析的内容。

    【讨论】:

      【解决方案2】:

      如果您要验证的是 XHTML,您可以这样做:

      static void validate(string filename)
      {
          XmlReaderSettings settings = new XmlReaderSettings();
          settings.ProhibitDtd = false;
          settings.ValidationType = ValidationType.DTD;
          settings.ValidationEventHandler +=
              new ValidationEventHandler(ValidationCallBack);
          settings.XmlResolver = new XhtmlUrlResolver();
      
          // Create the XmlReader object.
          XmlReader reader = XmlReader.Create(filename, settings);
      
          // Parse the file. 
          while (reader.Read()) ;
      }
      
      // Display any validation errors.
      private static void ValidationCallBack(object sender, ValidationEventArgs e)
      {
          Console.WriteLine("Validation Error: {0}", e.Message);
      }
      

      会有点慢,因为它是从 W3C 网站下载架构文件的。

      【讨论】:

        【解决方案3】:

        要反序列化/解析 HTML,我还推荐 HTMLAgilityPack。但是,要验证 HTML,您可以尝试运行 HTML Tidy。但是,对于 XHTML,您可以获得 XSD。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-11
          • 1970-01-01
          • 2021-01-11
          相关资源
          最近更新 更多