Question

This question already has an answer here:

I have a WCF service where Im building up a block of XML using an XmlWriter. Once complete I want to have the WCF return it as an XmlDocument.

But if I have XmlDocument in the [OperationContract] it doesnt work:

[OperationContract]
XmlDocument GetNextLetter();

The WCF test utility gives:

System.Runtime.Serialization.InvalidDataContractException: Type 'System.Xml.XmlDocument' cannot be serialized.

Was it helpful?

Solution

If you are using .Net 3.5 then you can try returning XElement instead - this implements IXmlSerializable, which is the missing ingredient needed to make it work with DataContractSerializer.

OTHER TIPS

append xmlserializer on what you did in the operational contract

[OperationContract,XmlSerializerFormat]
XmlDocument GetNextLetter();

this will do it !

The DataContractSerializer can serialize XmlElement instances. So just return the DocumentElement property of your XmlDocument instance. See: MSDN.

Don't send the XMLDocument, because you can reconstruct it on the other end.

You should probably send down the string that you want, or construct a business object which can be serialized to XML and transmit that.

Have a look at XSD.exe tool with the .net framework if you have an XSD and you want to make a business object from it which can be serialized.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top