12
votes

Supprimer la version du fichier XML

Je crée un format XML comme en utilisant xmlwriter code>. Mais dans la sortie, il y a aussi des informations de version.

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


5 commentaires

Arrêter! S'il te plaît! Ne faites pas de "formats de type XML". Utilisez de vrai XML. S'il s'agit de XML, un autre développeur viendra, regardez-le, supposez qu'il est XML, puis posez des problèmes quand ils essaient de l'analyser sous forme de XML. (Et une fois que vous utilisez du vrai XML, l'utilisation de l'instruction de traitement ne sera pas un problème, car les valeurs indiquées sont les valeurs par défaut supposées lorsque cette instruction de traitement est manquante).


C'est la déclaration XML requise par la spécification. Pourquoi voulez-vous le supprimer? (La déclaration est facultative dans XML 1.0 mais requise dans XML 1.1)


En outre, les informations que vous recherchez sont contenues dans la question omission d'instructions de traitement XML lors de la sérialisation d'un objet ( Stackoverflow.com/questions/164585/... )


@Divo il n'est pas nécessaire. Il est facultatif (tant que vous utilisez 1,0 et UTF-8 ou UTF-16)


Nous utilisons une langue personnalisée, il s'agit donc simplement de XML, mais pas le XML, nous avons un analyseur personnalisé pour analyser ce format qui n'a rien à voir avec cette instruction de traitement, donc n'en a pas besoin.


3 Réponses :



19
votes

Utilisez le ConformancelEvel et OMITXMLDeclaration Propriétés. Exemple: xxx


3 commentaires

Pourquoi utiliser ConformantanCelevel il fonctionne sans réglage w.settings.conformancelevel = confortableelevel.fragment; également. Qu'est-ce que ConformeBelevel?


Le niveau de confilement fragment signifie que vous n'écrivez pas un document entier, vous écrivez un fragment. La documentation indique que le réglage omitxmldeclaration à true n'aurait aucun effet si le ConformeanCelevel est défini sur document .


Juste pour noter que vous n'avez pas besoin de la ligne w.settings.conformancelevel = confortableelevel.fragment; il lancera une erreur si vous utilisez également écrivain.writestardocument (); . On pourrait soutenir que vous ne devriez pas l'utiliser de cette façon de toute façon, mais cela fonctionne aussi longtemps que vous le laissez comme Params.Conformancelevel = ConformancelEvel.Auto; .



12
votes

Lors de la création de votre XMLWriter, passez à travers les paramètres que vous souhaitez utiliser XMLWRITTERSETTINGS:

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

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


0 commentaires