Search code examples
c#.netxmlxmldocument

How to get XML with header (<?xml version="1.0"...)?


Consider the following simple code which creates an XML document and displays it.

XmlDocument xml = new XmlDocument();
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
XmlComment comment = xml.CreateComment("Comment");
root.AppendChild(comment);
textBox1.Text = xml.OuterXml;

it displays, as expected:

<root><!--Comment--></root>

It doesn't, however, display the

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

So how can I get that as well?


Solution

  • Create an XML-declaration using XmlDocument.CreateXmlDeclaration Method:

    XmlNode docNode = xml.CreateXmlDeclaration("1.0", "UTF-8", null);
    xml.AppendChild(docNode);
    

    Note: please take a look at the documentation for the method, especially for encoding parameter: there are special requirements for values of this parameter.