A A
RSS

Serialize Object To Clean XML

Tue, Feb 23, 2010

Programming

I hate all the junk that gets added when serializing object to XML, so here is a quick way to do it cleanly.

Here is the dirty way:

public static string Serialize(this object obj)
{
    string XmlString = String.Empty;
    using (var memStream = new MemoryStream())
    {
        var serializer = new XmlSerializer(obj.GetType(), string.Empty);
        using (var xmlText = new XmlTextWriter(memStream, Encoding.Default))
        {
            serializer.Serialize(xmlText, obj);
        }
        XmlString = Encoding.Default.GetString(memStream.ToArray());
        memStream.Close();
    }
    return XmlString;
}

The resulting XML looks like this:

<?xml version="1.0" encoding="Windows-1252"?>
<ZipContentInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FileName>00107_tokyoatnight_1680x1050.jpg</FileName>
    <FileSize>281268</FileSize>
</ZipContentInfo>

Here is a cleaner way:

public static string Serialize(this object obj)
{
    var ser = new XmlSerializer(obj.GetType());
    using (var tw = new StringWriter())
    {
        using (var xw = XmlWriter.Create(tw, new XmlWriterSettings() { OmitXmlDeclaration = true }))
        {
            var ns = new XmlSerializerNamespaces();
            //Add an empty namespace and empty value
            ns.Add("", "");
            ser.Serialize(xw, obj, ns);
            return tw.ToString();
        }
    }
}

And the resulting XML looks like this:

<ZipContentInfo>
    <FileName>00107_tokyoatnight_1680x1050.jpg</FileName>
    <FileSize>281268</FileSize>
</ZipContentInfo>

Tags: , ,

Comments are closed.

Advertise Here

What I'm Doing...

Yonkly Open Source

Sign up for my newsletter




* = required field

powered by MailChimp!

megree Widget

Apparently, I am connected to Obama. Check this out...
My path to Obama

Cyber Identity