c#xml反序列化

c#xml反序列化,c#,C#,如何像这样反序列化XML,我对消息数组有一些问题 <EventSources> <Source> <Event> <Id>9</Id> <Message LcId="1033">Text9</Message> <Message LcId="1031">Message 9</Message> <Message LcId="1034">Text9</M

如何像这样反序列化XML,我对消息数组有一些问题

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

9
文本9
信息9
文本9
10
文本10
信息10
文本10
我试图序列化此代码,但输出不匹配

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() { }

    }
}
公共类事件源
{
#区域变量
私有列表_Source=新列表();
#端区
#区域属性
公共列表源
{
获取{return\u Source;}
设置{u Source=value;}
}
#端区
public EventSources(){}
公共无效加法器(事件错误)
{
_Source.Add(错误);
}
}
公开课活动
{
#区域变量
私人内部Id;
私有列表_languageEntries=新列表();
#端区
#区域属性
[XmlElement()]
公共整数Id
{
获取{return\u Id;}
设置{u Id=value;}
}
公共列表语言条目
{
获取{return\u languageEntries;}
设置{u languageEntries=value;}
}
#端区
公共事件(){}
公共事件(int id)
{
_Id=Id;
}
公共无效添加(消息条目)
{
_languageEntries.Add(条目);
}
}
公共类消息
{
#区域变量
私有字符串_lang=string.Empty;
私有字符串_text=string.Empty;
#端区
#区域属性
[XmlAttribute(“LcId”)]
公共字符串LcId
{
获取{return\u lang;}
设置{u lang=value;}
}
[XmlText]
公共字符串文本
{
获取{return\u text;}
设置{u text=value;}
}
#端区
公共消息(){}
}
}
输出:

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

5.
KJHFDKGDSKFGDS
KJHFSKFGDS
[xmlement(“消息”)]
公共列表语言条目
{
获取{return\u languageEntries;}
设置{u languageEntries=value;}
}

如果您有此xml的架构文件,请使用xsd.exe生成匹配的C#对象。生成XML模式的对象表示后,可以使用XmlSerializer类中的方法来序列化和反序列化XML文件

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