views:

255

answers:

1

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?

+4  A: 

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();
Marc Gravell
I really should have googled this before. I remember looking to do similar and putting some dreadful string replace hack in to get it working. Nice Find :)
Eoin Campbell
@Johannes - yup! oops... fixed, thanks.
Marc Gravell
Works perfectly, thanks!
chris