Удалить объявление docType из вывода XmlSchema .net - PullRequest
3 голосов
/ 09 ноября 2010

следующий код:

        XmlSchema xmlSchema = new XmlSchema();

        XmlSchemaElement xmlSchemaElement = new XmlSchemaElement();            
        xmlSchemaElement.Name = "SomeElement";
        xmlSchema.Items.Add(xmlSchemaElement);

        XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(new NameTable());
        xmlNamespaceManager.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");

        StringWriter stringWriter = new StringWriter();            
        xmlSchema.Write(stringWriter, xmlNamespaceManager);

        String result = stringWriter.ToString();

дает мне:

<?xml version="1.0" encoding="utf-16"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="SomeElement" /> </xs:schema>

Я не хочу объявления docType.

Очевидно, я мог бы просто удалить первую строку. Но кто-нибудь знает, как остановить класс XmlSchema от написания объявления docType?

1 Ответ

4 голосов
/ 09 ноября 2010

Вместо того, чтобы писать прямо на StringWriter, пишите на XmlWriter.Таким образом, вы можете установить определенные параметры сериализации.

StringWriter stringWriter = new StringWriter();

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true; // <-- this is what you care about
XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings);
xmlSchema.Write(xmlWriter, xmlNamespaceManager);

String result = stringWriter.ToString();
...