Search code examples
c#xmllinq-to-sql

XDocument.Save() without header


I am editing csproj files with Linq-to-XML and need to save the XML without the <?XML?> header.

As XDocument.Save() is missing the necessary option, what's the best way to do this?


Solution

  • You can do this with XmlWriterSettings, and saving the document to an 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();