2009-03-23 12 views
7

इम deserialize XmlSerializer के साथ एक XML फ़ाइल deserialize की कोशिश कर रहा है, लेकिन इस अपवाद हो रही im की कोशिश कर रहा:अपवाद है जब एक xml फ़ाइल

"XML दस्तावेज में कोई त्रुटि है (1, 2)" InnerException है: "<Mymessage xmlns='http://MyMessages/'> अपेक्षित नहीं था।"

एक्सएमएल फ़ाइल में पहली पंक्ति कौन सी है। मेरा अनुमान है कि यह xmlns के साथ कुछ करने के लिए है।

मैं गूगल पूछने की कोशिश की, और फिर मेरी कोड

[XmlRoot("MyMessage", Namespace="'http://MyMessages/")] 

में निम्न पंक्ति जोड़ने की कोशिश की लेकिन मैं अभी भी एक ही अपवाद मिलता है।

+0

आप xml फ़ाइल की प्रासंगिकता का साझा कर सकता हैं? –

+0

यह एक पुराना सवाल है लेकिन यह जानना महत्वपूर्ण है कि एक धारावाहिक विशेषता अनुपलब्ध वर्ग के कारण एक ही त्रुटि उत्पन्न की जा सकती है। –

उत्तर

8

XmlSerializer के निर्माता में मैं कर रहा है कि सब कुछ काम किया के बाद, एक डिफ़ॉल्ट नेमस्पेस निर्दिष्ट करने के लिए आवश्यक ठीक

वर्ग है कि मैं deserialize करने के लिए कोशिश कर रहा था करने के लिए

[XmlRoot("RenderResult", Namespace = "http://mynamespace.uri.org")] 

:

+5

क्या आप एक कोड उदाहरण दे सकते हैं कि आपने इसे कैसे हल किया? मुझे लगता है कि मुझे एक ही समस्या है, लेकिन डिफ़ॉल्ट नामस्थान निर्दिष्ट करने से कोई फर्क नहीं पड़ता है। – Jon

3

कृपया समस्या को बेहतर ढंग से समझने में सहायता के लिए पूर्ण XML फ़ाइल कोड प्रदान करें।

इसके अलावा xml फ़ाइल में पहली पंक्ति के रूप में इस डाल और देखें कि क्या इस मुद्दे

<?xml version="1.0" encoding="utf-8"?> 
+0

मैं सभी इंटरऑपर्टेबल वेब सेवा कार्य के लिए आईएसओ -885 9 -1 के बजाय "utf-8" का उपयोग करने की दृढ़ता से अनुशंसा करता हूं! –

1

हल करती है ऐसा लगता है कि आप एक borked xml फ़ाइल है। पता लगाने के लिए आसान तरीके:

  • या सिर्फ यकीन है कि यह उसे .xml एक्सटेंशन और वी.एस. या IE
  • में लोड है बनाने या इसे
  • से अधिक xsd.exe चलाने यह एक xml दर्शक में लोड करके देखें

यदि वे शिकायत करते हैं, तो एक्सएमएल निश्चित रूप से भ्रष्ट है। यदि वे ठीक काम करते हैं, और अपना डेटा प्रदर्शित करते हैं, तो संभवतः आपके पास क्रमबद्धता गुण गलत हैं। "/ वर्ग" स्विच के साथ xsd.exe का उपयोग कर यह इसके साथ क्या करेंगे देखने के लिए प्रयास करें ...

2

CruelIO की प्रतिक्रिया करने के लिए इसके अलावा, मैं जोड़कर त्रुटि संकल्प लिया। उदाहरण के लिए: क्रमबद्धता कोड था:

RenderResult result; 
using (var memoryStream = new MemoryStream(data)) 
{ 
    var xmlSerializer = new XmlSerializer(typeof(RenderResult)); 
    result = (RenderResult)xmlSerializer.Deserialize(memoryStream); 
} 

और मेरी कक्षा इस तरह देखा:

[XmlRoot("RenderResult", Namespace = "http://mynamespace.uri.org")] 
public class RenderResult 
{ 
} 
संबंधित मुद्दे