Estoy tratando de serializar/deserializar el código de proxy del servicio web WCF generado de svcutil. Si bien puedo serializar los objetos, no puedo deserializarlos a los objetos. Aquí está el código XML que genera a través de la serialización:¿Cómo serializar/deserializar el código proxy WCF generado?
<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>
Tengo un par de preguntas:
ya estoy usando XmlSerializerNamespaces para declarar el espacio de nombres para que coincida con el espacio de nombres especificados en el código proxy generado. ¿Cómo es que todavía hay una etiqueta "p4" que se agregó a la etiqueta "SomeObject" y se agregó un nuevo espacio de nombre xml (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(); }
Cuando trato de deserializar el XML con el código siguiente, me sale el siguiente error: "System.InvalidOperationException:. Hubo un error al generar el documento XML ---> System.Xml.XmlException: 'p4: type' es un nombre de atributo duplicado. "
using (TextReader textReader = new StringReader(xmlString)) { using (XmlReader xmlReader = XmlReader.Create(textReader)) { XmlSerializer serializer = new XmlSerializer(typeof(T), defaultNamespace); return (T)serializer.Deserialize(xmlReader); } }
El código proxy es generada por svcutil para comunicarse con un servicio web WCF. Todos los objetos generados se serializan/deserializan correctamente cuando solo uso la llamada al servicio web.
¿Alguien ha tenido problemas similares anteriormente?