2011-11-01 17 views
7

निम्नलिखित कोड को देखते हुए ...नेट Xml serializer वैकल्पिक विशेषताओं

[XmlType("Field")] 
public class SearchField 
{ 
    [XmlAttribute("alias")] 
    public string Alias; 

    [XmlAttribute("entity")] 
    public string Entity; 
} 

उर्फ ​​हमारे लिए एक वैकल्पिक फ़ील्ड है, लेकिन deserializer फेंकता है जब "उर्फ" विशेषता एक्सएमएल से लापता है। आप इसे वैकल्पिक कैसे बनाते हैं? क्या एक स्कीमा आवश्यक है?

उत्तर

9

अजीब है, क्योंकि निम्नलिखित कार्यक्रम मेरे लिए ठीक काम करता है, किसी भी throwings बिना:

using System; 
using System.IO; 
using System.Xml; 
using System.Xml.Serialization; 

[XmlType("Field")] 
public class SearchField 
{ 
    [XmlAttribute("alias")] 
    public string Alias; 

    [XmlAttribute("entity")] 
    public string Entity; 
} 

class Program 
{ 
    static void Main() 
    { 
     using (var reader = new StringReader("<Field entity=\"en\" />")) 
     { 
      var serializer = new XmlSerializer(typeof(SearchField)); 
      var s = (SearchField)serializer.Deserialize(reader); 
      Console.WriteLine(s.Alias); 
      Console.WriteLine(s.Entity); 
     } 
    } 
} 

आप देख सकते हैं alias विशेषता इनपुट XML और अभी तक कोई समस्या नहीं deserializing से छोड़ा गया है।

संबंधित मुद्दे