visual pagina online oficial net from convert compilador c# .net xml xml-deserialization

pagina - xml string to object c#



Deserialización de XML desde String (2)

Estoy intentando convertir el resultado que obtengo de mi servicio web como una cadena y convertirlo en un objeto.

Esta es la cadena que estoy recibiendo de mi servicio:

<StatusDocumentItem><DataUrl/><LastUpdated>2013-01-31T15:28:13.2847259Z</LastUpdated><Message>The processing of this task has started</Message><State>1</State><StateName>Started</StateName></StatusDocumentItem>

Así que tengo una clase para esto como:

[XmlRoot] public class StatusDocumentItem { [XmlElement] public string DataUrl; [XmlElement] public string LastUpdated; [XmlElement] public string Message; [XmlElement] public int State; [XmlElement] public string StateName; }

Y así es como trato de obtener esa cadena como un objeto de tipo StatusDocumentItem con XMLDeserializer (NB. OperationXML contiene la cadena):

string operationXML = webRequest.getJSON(args[1], args[2], pollURL); var serializer = new XmlSerializer(typeof(StatusDocumentItem)); StatusDocumentItem result; using (TextReader reader = new StringReader(operationXML)) { result = (StatusDocumentItem)serializer.Deserialize(reader); } Console.WriteLine(result.Message);

Pero mi objeto de resultado está siempre vacío. ¿Qué estoy haciendo mal?

Actualizar El valor que obtengo de mi operationXML es como este y tiene un atributo xmlns innecesario que bloquea mi deserialización. Sin ese atributo, todo funciona bien. Así es como se ve:

"<StatusDocumentItem xmlns:i=/"http://www.w3.org/2001/XMLSchema-instance/"><DataUrl/><LastUpdated>2013-02-01T12:35:29.9517061Z</LastUpdated><Message>Job put in queue</Message><State>0</State><StateName>Waiting to be processed</StateName></StatusDocumentItem>"


Prueba esto:

string xml = "<StatusDocumentItem xmlns:i=/"http://www.w3.org/2001/XMLSchema-instance/"><DataUrl/><LastUpdated>2013-02-01T12:35:29.9517061Z</LastUpdated><Message>Job put in queue</Message><State>0</State><StateName>Waiting to be processed</StateName></StatusDocumentItem>"; var serializer = new XmlSerializer(typeof(StatusDocumentItem)); StatusDocumentItem result; using (TextReader reader = new StringReader(xml)) { result = (StatusDocumentItem)serializer.Deserialize(reader); } Console.WriteLine(result.Message); Console.ReadKey();

¿Muestra "Trabajo puesto en cola"?


AccountRequest xml = null; var serializer = new XmlSerializer(typeof(AccountRequest)); using (TextReader reader = new StringReader(requestXml)) { xml = (AccountRequest)serializer.Deserialize(reader); }