2009-12-30 12 views
12

Je crée un format de type Xml en utilisant XmlWriter. Mais dans la sortie il y a aussi des informations de version.Suppression de la version du fichier XML

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

Je n'en ai pas besoin dans mon fichier. Comment puis je faire ça? Y a-t-il un moyen de l'enlever par code?

+9

Stop! S'il vous plaît! Ne faites pas de "formats semblables à XML". Utilisez le vrai XML. Si c'est un XML, un autre développeur viendra, regardera, supposera que c'est du XML, et aura des problèmes quand il essayera de l'analyser en XML. (Et une fois que vous utilisez du XML réel, l'utilisation de l'instruction de traitement ne posera pas de problème, puisque les valeurs données ici sont les valeurs par défaut supposées lorsque cette instruction de traitement est manquante). – Quentin

+2

C'est la déclaration XML requise par la spécification. Pourquoi voulez-vous l'enlever? (La déclaration est facultative en XML 1.0 mais obligatoire en XML 1.1) –

+0

En outre, les informations que vous recherchez sont contenues dans la question _Omettre l'instruction de traitement XML lors de la sérialisation d'un objet_ (http://stackoverflow.com/questions/164585/ omitting-xml-processing-instruction-when-sérialisation-un-objet) –

Répondre

19

Utilisez les ConformanceLevel et OmitXmlDeclaration propriétés. Exemple:

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

pourquoi utiliser ConformanceLevel fonctionne sans paramètre w.Settings.ConformanceLevel = ConformanceLevel.Fragment; aussi. Qu'est-ce que ConformanceLevel? – viky

+1

Le niveau de conformité 'Fragment' signifie que vous n'écrivez pas un document entier, vous écrivez un fragment. La documentation dit que le réglage de 'OmitXmlDeclaration' à' true' n'aurait aucun effet si le 'ConformanceLevel' est défini sur' Document'. –

+0

Juste pour noter que vous n'avez pas besoin de la ligne 'w.Settings.ConformanceLevel = ConformanceLevel.Fragment;' Il va lancer une erreur si vous utilisez aussi 'writer.WriteStartDocument();'. On pourrait argumenter que vous ne devriez pas l'utiliser de cette façon, mais cela fonctionne aussi longtemps que vous le laissez comme 'settings.ConformanceLevel = ConformanceLevel.Auto;'. – Ravendarksky

11

Lorsque vous créez votre XmlWriter, passer à travers les paramètres que vous souhaitez à l'aide XmlWriterSettings:

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

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

XmlWriterSettings possède d'autres propriétés ainsi (tiret et plus).