你如何在C#中序列化HTML?

时间:2009-11-25 00:15:58

标签: c# html xml

如何在C#中序列化HTML?

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

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

至少有没有办法使用C#来查明HTML文件是否有效?

3 个答案:

答案 0 :(得分:2)

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

对你提供的HTML非常宽容,所以如果你有一个严格的xHTML有效文件,我不确定它是否是一个很好的检查方法。但它应该能够解析现代浏览器可以做的任何事情。

答案 1 :(得分:0)

如果是您尝试验证的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网站下载架构文件,所以会有点慢。

答案 2 :(得分:0)

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