I am trying to serialize / deserialize the generated WCF web service proxy from svcutil. Although I can serialize objects, I cannot deserialize them back to objects. Here is the XML generated by serialization:
<RootObject xmlns="http://schemas.myco.com/online/sync/2008/11">
<WrapperObject>
<Objects>
<SomeObject p4:type="Foo" ContextId="d5f9f021-b2a1-47ba-9f25-1e068194dc87" ObjectId="fad3ef87-3944-459d-b45b-1e4e52ef24db" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.myco.com/online/sync/2008/11" />
</Objects>
</WrapperObject>
</RootObject>
I have a couple of questions:
I already use XmlSerializerNamespaces to declare the namespace according to the namespace specified in the generated proxy code. How did it happen that the "p4" tag was added to the "SomeObject" tag and a new xml namespace was added (xmlns: p4 = "http://www.w3.org/2001/XMLSchema-instance").
using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
{
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, defaultNamespace);
XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace);
serializer.Serialize(xmlWriter, objectToBeSerialized, namespaces);
return stringBuilder.ToString();
}
XML , : "System.InvalidOperationException: , XML-. --- > System.Xml.XmlException: 'p4: type '- .
using (TextReader textReader = new StringReader(xmlString))
{
using (XmlReader xmlReader = XmlReader.Create(textReader))
{
XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace);
return (T)serializer.Deserialize(xmlReader);
}
}
- svcutil - WCF. / , -.
- ?