.net 将格式不太好的XML加载到XDocument(多个DTD)

.net 将格式不太好的XML加载到XDocument(多个DTD),.net,dtd,doctype,linq-to-xml,xml-parsing,.net,Dtd,Doctype,Linq To Xml,Xml Parsing,我在处理几乎是格式良好的XHTML文档的数据时遇到了一个问题,除了它在开始时有多个DTD声明: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!DOCTYPE HTML PUBLIC

我在处理几乎是格式良好的XHTML文档的数据时遇到了一个问题,除了它在开始时有多个DTD声明:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    ...
  </head>
  <body>
    ...
  </body>
</html>
处理此类数据的最佳方式是什么


注:我忘了提到,数据来自
流,这可能会或可能不会使字符串操作更复杂一点我不确定是否有XmlReader设置会忽略此问题,但您可以始终使用标准字符串操作来删除额外的doctype

        var xmlReaderSettings = new XmlReaderSettings
                                    {
                                        DtdProcessing = DtdProcessing.Parse,
                                        XmlResolver = new XmlPreloadedResolver(),
                                        ConformanceLevel = ConformanceLevel.Document,
                                    };
        using (var xmlReader = XmlReader.Create(stream, xmlReaderSettings))
        {
            return XDocument.Load(xmlReader);
        }