I have been working with a 3rd party java based REST webservice, that returns an array of xmlNodes.
The xmlNode[] respresent an object and I am trying to work out the best way to Deserialize the xmlNode[] in the object? is it to build up a xmlDocument first and the Deserialize ?
Thanks
If you have the WCF Rest Starter Kit preview installed, there's a neat trick:
This will paste your XML that's on the clipboard into your project as a C# class that is capable of deserializing that exact XML. Pretty nifty!
See these blog posts about it:
That should save you a lot of typing and make life a lot easier!
UPDATE:
OK, you already have your classes generated from the XML you get back. Now you need to convert a XmlNode
to your class.
You'll have to do something like this:
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
You need to write the XML representation (property .OuterXml
) of the XmlNode
to a stream (here a MemoryStream
) and then use the XmlSerializer
to serialize back the object from that stream.
You can do it with the generic method and call
Customer myCustomer = ConvertNode<Customer>(xmlNode);
or you could even turn that code into either an extension method on the XmlNode
class so you could write:
Customer myCustomer = xmlNode.ConvertNode<Customer>();
Marc