Search code examples
c#xmlxmlserializer

XML Serializer remove XML definition


How do we remove XML definition () when we serialize List object to xml in C#?

<?xml version="1.0" encoding="utf-16"?>

Solution

  • Use XmlWriterSettings.OmitXmlDeclaration, and pass in the XmlWriterSettings instance when instantiating your XmlWriter.

    Copied & pasted example from the link:

    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.OmitXmlDeclaration = true;
    settings.NewLineOnAttributes = true;
    
    writer = XmlWriter.Create(Console.Out, settings);
    
    writer.WriteStartElement("order");
    writer.WriteAttributeString("orderID", "367A54");
    writer.WriteAttributeString("date", "2001-05-03");
    writer.WriteElementString("price", "19.95");
    writer.WriteEndElement();
        
    writer.Flush();
    

    OP apparently wanted this xml generated to a string that OP could pass back in an API response.

    string result;
    using (var stream = new MemoryStream()) {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.OmitXmlDeclaration = true;
        settings.NewLineOnAttributes = true;
    
        writer = XmlWriter.Create(stream, settings);
    
        writer.WriteStartElement("order");
        writer.WriteAttributeString("orderID", "367A54");
        writer.WriteAttributeString("date", "2001-05-03");
        writer.WriteElementString("price", "19.95");
        writer.WriteEndElement();
        
        writer.Flush();
        result = Encoding.UTF8.GetString(stream.ToArray());
    }