Один из подходов - написать класс-оболочку для XmlWriter. Итак:
XmlWriter writer = new MyXmlWriterWrapper(XmlWriter.Create(..., settings))
Затем для класса MyXmlWriterWrapper определите каждый метод в интерфейсе класса XmlWriter для прямой передачи вызова в упакованный модуль записи, за исключением метода WriteDocType. Затем вы можете определить это как что-то вроде:
public override void WriteDocType(string name, string pubid, string sysid, string subset)
{
if ((pubid == null) && (sysid == null) && (subset == null))
{
this.wrappedWriter.WriteRaw("<!DOCTYPE HTML>");
}
else
{
this.wrappedWriter.WriteDocType(name, pubid, sysid, subset);
}
}
Правда, не особо чистое решение, но оно подойдет.