2013-02-01 29 views
19

से XML को deserializing मैं एक स्ट्रिंग के रूप में अपनी वेब सेवा से प्राप्त परिणाम को बदलने और इसे किसी ऑब्जेक्ट में कनवर्ट करने का प्रयास कर रहा हूं।स्ट्रिंग

इस स्ट्रिंग मैं अपने सेवा से हो रही है है:

<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> 

तो मैं के लिए एक वर्ग है इस के रूप में:

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

और यह कैसे मुझे लगता है कि प्राप्त करने के लिए कोशिश कर रहा हूँ है XMLDeserializer साथ प्रकार StatusDocumentItem की एक वस्तु के रूप में स्ट्रिंग (। एनबी operationXML स्ट्रिंग):

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); 

लेकिन मेरी परिणाम वस्तु हमेशा खाली है। मैं क्या गलत कर रहा हूं?

अद्यतन। मेरे ऑपरेशनएक्सएमएल से प्राप्त मूल्य इस तरह है और इसमें एक अनावश्यक xmlns विशेषता है जो मेरे deserialization को अवरुद्ध कर रहा है। उस विशेषता के बिना, सब कुछ ठीक काम कर रहा है।

"<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>" 
+1

"ऑपरेशन एक्सएमएल में स्ट्रिंग है" - क्या यह है? क्या आपने वास्तव में एक डीबगर कहकर चेक किया है? एक्सएमएल दिखने के लिए "getJSON" मछली पकड़ने लग रहा है। –

+1

यदि आप अपना एक्सएमएल उदाहरण _operationXML_ पर सेट करते हैं। Deserialization पूरी तरह से अच्छी तरह से काम करता है। –

+0

हां इसमें स्ट्रिंग होती है, यहां मुझे डीबगर से मिलता है: " 2013-02-01T12: 13: 02.0997071Z इस कार्य के प्रसंस्करण शुरू किया शुरू कर दिया है " – Disasterkid

उत्तर

50

इस प्रयास करें::

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(); 

यह "नौकरी कतार में डाल" दिखाने करता है यह इस प्रकार से की तरह लग रहा है?