Convert an object to an XML string

FluepkeSchaeng picture FluepkeSchaeng · Jul 12, 2012 · Viewed 211.3k times · Source

I have got a class named WebserviceType I got from the tool xsd.exe from an XSD file.

Now I want to deserialize an instance of an WebServiceType object to a string. How can I do this?

The MethodCheckType object has as params a WebServiceType array.

My first try was like I serialized it: with a XmlSerializer and a StringWriter (while serializing I used a StringReader).

This is the method in which I serialize the WebServiceType object:

XmlSerializer serializer = new XmlSerializer(typeof(MethodCheckType));
        MethodCheckType output = null;
        StringReader reader = null;

        // catch global exception, logg it and throw it
        try
        {
            reader = new StringReader(path);
            output = (MethodCheckType)serializer.Deserialize(reader);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            reader.Dispose();
        }

        return output.WebService;

Edit:

Maybe I could say it in different words: I have got an instance of this MethodCheckType object an on the other hand I have got the XML document from which I serialized this object. Now I want to convert this instance into a XML document in form of a string. After this I have to proof if both strings (of XML documents) are the same. This I have to do, because I make unit tests of the first method in which I read an XML document into a StringReader and serialize it into a MethodCheckType object.

Answer

Tomas Grosup picture Tomas Grosup · Jul 12, 2012

Here are conversion method for both ways. this = instance of your class

public string ToXML()
    {
        using(var stringwriter = new System.IO.StringWriter())
        { 
            var serializer = new XmlSerializer(this.GetType());
            serializer.Serialize(stringwriter, this);
            return stringwriter.ToString();
        }
    }

 public static YourClass LoadFromXMLString(string xmlText)
    {
        using(var stringReader = new System.IO.StringReader(xmlText))
        {
            var serializer = new XmlSerializer(typeof(YourClass ));
            return serializer.Deserialize(stringReader) as YourClass ;
        }
    }