한 가지 방법은 XmlWriter를위한 래퍼 클래스를 작성하는 것입니다. 그래서 :
XmlWriter writer = new MyXmlWriterWrapper(XmlWriter.Create(..., settings))
그런 다음 MyXmlWriterWrapper 클래스의 WriteDocType 방법을 제외하고, 바로 포장 작가에 이르기까지 호출을 전달하는 XmlWriter를 클래스 인터페이스에 각각의 방법을 정의합니다. 그런 다음이를 다음과 같이 정의 할 수 있습니다.
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);
}
}
분명히 솔직한 해결책은 아니지만 일을 할 것입니다.
나는 지금 비슷한 것을하고있다 : 기본 TextWriter로 doctype을 수동으로 작성한 다음, XmlWriter를 사용하여 XDocument를 작성한다. 나는 더 이상 XDocumentType 객체를 추가하지 않을 것이다. –