How can I make the xmlserializer only serialize plain xml?

前端 未结 4 427
遇见更好的自我
遇见更好的自我 2020-12-02 09:54

I need to get plain xml, without the at the beginning and xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-i

相关标签:
4条回答
  • 2020-12-02 10:05

    To put this all together - this works perfectly for me:

        // To Clean XML
        public string SerializeToString<T>(T value)
        {
            var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
            var serializer = new XmlSerializer(value.GetType());
            var settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.OmitXmlDeclaration = true;
    
            using (var stream = new StringWriter())
            using (var writer = XmlWriter.Create(stream, settings))
            {
                serializer.Serialize(writer, value, emptyNamespaces);
                return stream.ToString();
            }
        }
    
    0 讨论(0)
  • 2020-12-02 10:07

    This will write the XML to a file instead of a string. Object ticket is the object that I am serializing.

    Namespaces used:

    using System.Xml;
    using System.Xml.Serialization;
    

    Code:

    XmlSerializerNamespaces emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
    
    XmlSerializer serializer = new XmlSerializer(typeof(ticket));
    
    XmlWriterSettings settings = new XmlWriterSettings
    {
        Indent = true,
        OmitXmlDeclaration = true
    };
    
    using (XmlWriter xmlWriter = XmlWriter.Create(fullPathFileName, settings))
    {
        serializer.Serialize(xmlWriter, ticket, emptyNamespaces); 
    }
    
    0 讨论(0)
  • 2020-12-02 10:09

    Use the XmlSerializer.Serialize method overload where you can specify custom namespaces and pass there this.

    var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
    serializer.Serialize(xmlWriter, objectToSerialze, emptyNs);
    

    passing null or empty array won't do the trick

    0 讨论(0)
  • 2020-12-02 10:25

    You can use XmlWriterSettings and set the property OmitXmlDeclaration to true as described in the msdn. Then use the XmlSerializer.Serialize(xmlWriter, objectToSerialize) as described here.

    0 讨论(0)
提交回复
热议问题