2009-04-20 10 views
14

Je suis en train d'éditer des fichiers csproj avec Linq-to-XML et j'ai besoin de sauvegarder le XML sans l'en-tête <?XML?>.XDocument.Save() sans en-tête

Comme XDocument.Save() manque l'option nécessaire, quelle est la meilleure façon de le faire?

Répondre

22

Vous pouvez le faire avec XmlWriterSettings, et l'enregistrement du document à un XmlWriter:

XDocument doc = new XDocument(new XElement("foo", 
    new XAttribute("hello","world"))); 

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.OmitXmlDeclaration = true; 
StringWriter sw = new StringWriter(); 
using (XmlWriter xw = XmlWriter.Create(sw, settings)) 
// or to write to a file... 
//using (XmlWriter xw = XmlWriter.Create(filePath, settings)) 
{ 
    doc.Save(xw); 
} 
string s = sw.ToString(); 
+0

Je devrais avoir googlé auparavant. Je me souviens d'avoir cherché à faire des choses similaires et de mettre une chaîne redoutable pour le faire fonctionner. Nice Find :) –

+0

@Johannes - yup! oups ... corrigé, merci. –

+0

Fonctionne parfaitement, merci! – laktak