2010-11-24 3 views
0

Comment désérialiser un XML comme ceci, j'ai quelques problèmes avec le tableau de messages.C# xml deserilization

<EventSources> 
<Source> 
<Event> 
    <Id>9</Id> 
    <Message LcId="1033">Text9</Message> 
    <Message LcId="1031">Message 9</Message> 
    <Message LcId="1034">Text9</Message> 
</Event> 

<Event> 
    <Id>10</Id> 
    <Message LcId="1033">Text10</Message> 
    <Message LcId="1031">Message 10</Message> 
    <Message LcId="1034">Text10</Message> 
</Event> 

</Source> 
</EventSources> 

J'ai essayé de sérialisation ce code, mais la sortie ne correspond pas à

public class EventSources 
{ 
    #region Variables 
    private List<Event> _Source = new List<Event>(); 
    #endregion 

    #region Properties 
    public List<Event> Source 
    { 
     get { return _Source; } 
     set { _Source = value; } 
    } 


    #endregion 

    public EventSources() { } 

    public void AddError(Event error) 
    { 
     _Source.Add(error); 
    } 
} 

public class Event 
{ 
    #region Variables 
    private int _Id; 
    private List<Message> _languageEntries = new List<Message>(); 
    #endregion 

    #region Properties 
    [XmlElement()] 
    public int Id 
    { 
     get { return _Id; } 
     set { _Id = value; } 
    } 

    public List<Message> LanguageEntries 
    { 
     get { return _languageEntries; } 
     set { _languageEntries = value; } 
    } 
    #endregion 

    public Event() { } 

    public Event(int id) 
    { 
     _Id = Id; 
    } 

    public void Add(Message entry) 
    { 
     _languageEntries.Add(entry); 
    } 
} 

public class Message 
{ 
    #region Variables 
    private string _lang = string.Empty; 
    private string _text = string.Empty; 
    #endregion 

    #region Properties 

    [XmlAttribute("LcId")] 
    public string LcId 
    { 
     get { return _lang; } 
     set { _lang = value; } 
    } 

    [XmlText] 
    public string Text 
    { 
     get { return _text; } 
     set { _text = value; } 
    } 
    #endregion 

    public Message() { } 

    } 
} 

Sortie:

<EventSources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Source> 
    <Event> 
     <Id>5</Id> 
     <LanguageEntries> 
     <Message LcId="5">kjhfdkgdskfkgds</Message> 
     <Message LcId="554">kjhfskfkgds</Message> 
     </LanguageEntries> 
    </Event> 
    </Source> 
    <Messages /> 
</EventSources> 

Répondre

2
[XmlElement("Message")] 
public List<Message> LanguageEntries 
{ 
    get { return _languageEntries; } 
    set { _languageEntries = value; } 
} 
0

Si vous avez un fichier de schéma pour ce xml, utilisez xsd .exe pour générer les objets C# correspondants. Une fois que vous avez généré une représentation d'objet du schéma XML, vous pouvez utiliser des méthodes de la classe XmlSerializer pour sérialiser et désérialiser les fichiers XML.