xmlwriter write elements in one line

11,527

Solution 1

You have create an instance of XmlWriterSettings.

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create(savefilepath, settings);

Solution 2

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (var writer = XmlWriter.Create(savefilepath, settings))
{
     WriteXMLFile(writer);
}

Solution 3

You should use an XmlWriterSettings - set your appropriate formatting options and pass it when creating the XmlWriter.

Read more about it here: http://msdn.microsoft.com/en-us/library/kbef2xz3.aspx

Share:
11,527
kartal
Author by

kartal

Updated on June 19, 2022

Comments

  • kartal
    kartal almost 2 years

    I tried to save some elements from my application in xml file but when I started to develop it using this code :

    public static void WriteInFile(string savefilepath)
            {
                XmlWriter writer = XmlWriter.Create(savefilepath);
                WriteXMLFile(writer);
    
            }
    private static void WriteXMLFile(XmlWriter writer) //Write and Create XML profile for specific type 
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("cmap");
                writer.WriteAttributeString("xmlns", "dcterms",null, "http://purl.org/dc/terms/");
                writer.WriteElementString("xmlns", "http://cmap.ihmc.us/xml/cmap/");
               // writer.WriteAttributeString("xmlns","dc",null, "http://purl.org/dc/elements/1.1/");
                //writer.WriteAttributeString("xmlns", "vcard", null, "http://www.w3.org/2001/vcard-rdf/3.0#");
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Close();
            }
    

    I found that the output in notepad are in one line like this :

    <?xml version="1.0" encoding="utf-8"?><cmap
    xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns></cmap>
    

    I want it appear as multiline like this:

    <?xml version="1.0" encoding="utf-8"?> <cmap
    xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns>
    </cmap>
    
  • Kobunite
    Kobunite about 11 years
    It's worth mentioning, for any future readers with this issue, that writing a whitespace will stop the new line/indent from working. MSDN for XmlWriterSettings.Indent - "The elements are indented as long as the element does not contain mixed content. Once the WriteString or WriteWhitespace method is called to write out a mixed element content, the XmlWriter stops indenting. The indenting resumes once the mixed content element is closed."