c# - XmlDocument.Load(xml) generates No Root Element error from XmlSerializer serialized code -


मेरे पास एक ऐसा वर्ग है:

  [XmlRoot "MyMessageType"]] सार्वजनिक वर्ग MyMessageType: BaseMessageType {[XmlElement ("MessageId")) // संदेश इंप्रेशन के लिए ... & lt; snip & gt; // अंत गुण }  

इस वर्ग में एक BizTalk सर्वर को पास करने के लिए XmlDocument उदाहरण बनाने के लिए एक स्थिर विधि है जैसे:

  सार्वजनिक स्थिर XmlDocument GetMyMessageType (स्ट्रिंग इनपुट 1, स्ट्रिंग इनपुट 2 ...)  

GetMyMessageType की एक उदाहरण बनाता है MyMessageType, फिर निम्न कोड को कॉल करता है:

  XmlSerializer आउटसियर = नया एक्सएमएलसेरियलाइजर (उदाहरण। GetType ()); (मेमोरीस्ट्रीम मेम = नया मेमोरीस्ट्रीम ()) का उपयोग करते हुए (एक्सएमएलआरित्र _xWrite = XmlWriter.Create (मेम)) {out.Ser.Serialize (_xWrite, उदाहरण); XmlDocument आउट डॉक = नया XmlDocument (); outDoc.Load (XmlReader.Create (सदस्य)); वापसी आउट डॉक; }  

जब मैं इस कोड को चलाने का प्रयास करता हूं, मुझे एक XmlException "रूट एलीमेंट लापता है।" जब मैं कोड को आउटपुट को एक परीक्षण फ़ाइल में संशोधित करता हूं, मुझे एक अच्छी तरह से बनाई गई Xml दस्तावेज़ मिलता है। कोई मुझे बता सकता है कि मैं एक फ़ाइल में आउटपुट करने में सक्षम क्यों हो सकता हूं, लेकिन एक एक्सएमएलडीकास्ट के रूप में नहीं?

आपने मेमोरीस्ट्रीम को फिर से नहीं निकाला है, और आपको यह भी नहीं पता है कि लेखक को स्ट्रीम में flushed है मुझे कुछ और होगा:

  का उपयोग कर (मेमोरीस्ट्रीम मेम = नया मेमोरीस्ट्रीम ()) {out.Ser.Serialize (मेम, उदाहरण); Mem.position = 0; XmlDocument आउट डॉक = नया XmlDocument (); outDoc.Load (सदस्य); वापसी आउट डॉक; }  

असल में, मैं इसके बजाय एक StringWriter को क्रमबद्ध कर सकता हूं; कुछ एन्कोडिंग / डीकोडिंग ओवरहेड सहेजें:

  स्ट्रिंग xml; (स्ट्रिंगवर्टर लेखक = नया स्ट्रिंगर्राइटर ()) का उपयोग करना {out.Ser.Serialize (लेखक, उदाहरण); Xml = लेखक। टॉस्ट्रिंग (); } XmlDocument आउट डॉक = नया XmlDocument (); outDoc.LoadXml (xml); वापसी आउट डॉक;  

Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -