2009-12-30 8 views
12

Ich erstelle ein XML-ähnliches Format mit XmlWriter. Aber in der Ausgabe gibt es auch Versionsinformationen.Entfernen der Version aus der XML-Datei

<?xml version="1.0" encoding="utf-8"?> 

Ich brauche das nicht in meiner Datei. Wie kann ich das machen? Gibt es eine Möglichkeit, es durch Code zu entfernen?

+9

Stop! Bitte! Mache keine "XML-ähnlichen Formate". Verwenden Sie echtes XML. Wenn es XML-ähnlich ist, wird ein anderer Entwickler mitkommen, es betrachten, annehmen, dass es XML ist, und dann Probleme haben, wenn er versucht, es als XML zu analysieren. (Und wenn Sie echtes XML verwenden, ist die Verwendung der Verarbeitungsanweisung kein Problem, da die dort angegebenen Werte die Standardwerte sind, die angenommen werden, wenn diese Verarbeitungsanweisung fehlt). – Quentin

+2

Das ist die von der Spezifikation geforderte XML-Deklaration. Warum willst du es entfernen? (Die Deklaration ist in XML 1.0 optional, in XML 1.1 jedoch erforderlich.) –

+0

Die gesuchten Informationen sind außerdem in der Frage _Overting XML processing instruction beim Serialisieren eines Objekts_ enthalten (http://stackoverflow.com/questions/164585/). udging-xml-processing-instruction-wenn-serialisieren-ein-Objekt –

Antwort

19

Verwenden Sie die ConformanceLevel und OmitXmlDeclaration Eigenschaften verwenden. Beispiel:

XmlWriter w; 
w.Settings = new XmlWriterSettings(); 
w.Settings.ConformanceLevel = ConformanceLevel.Fragment; 
w.Settings.OmitXmlDeclaration = true; 
+0

Warum sollte ConformanceLevel verwendet werden, ohne dass w.Settings.ConformanceLevel = ConformanceLevel.Fragment eingestellt wird; ebenfalls. Was ist ConformanceLevel? – viky

+1

Die Konformitätsstufe "Fragment" bedeutet, dass Sie nicht ein ganzes Dokument schreiben, sondern ein Fragment. Die Dokumentation besagt, dass die Einstellung "OmitXmlDeclaration" auf "true" keine Auswirkungen hätte, wenn "ConformanceLevel" auf "Document" eingestellt ist. –

+0

Nur um festzustellen, dass Sie nicht die Zeile 'w.Settings.ConformanceLevel = ConformanceLevel.Fragment; haben müssen, wird ein Fehler ausgegeben, wenn Sie auch' writer.WriteStartDocument(); 'verwenden. Man könnte argumentieren, dass man es auf diese Weise sowieso nicht verwenden sollte, aber es funktioniert solange man es als 'settings.ConformanceLevel = ConformanceLevel.Auto;'. – Ravendarksky

11

Wenn Ihr XmlWriter erstellen, gehen durch die Einstellungen, die Sie XmlWriterSettings verwenden möchten:

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.OmitXmlDeclaration = true; 

writer = XmlWriter.Create(Console.Out, settings); 

XmlWriterSettings hat andere Eigenschaften als auch (Gedankenstrich und mehr).