Xml数组反序列化为c#对象,不需要顶级数组元素

本文关键字:不需要 数组元素 对象 数组 反序列化 Xml | 更新日期: 2023-09-27 18:18:06

我有以下Xml:

<Head>
<Name>someName</Name>
<Config>
  <Section name='One'/>  
  <Section name='Two'/>
</Config>
</Head>

,我希望它映射以下对象结构:

public class Head{
   public String Name {get;set;}
   public Config Config {get;set;}       
}
public class Config
{       
    public Section[] Sections { get; set; }
}
public class Section
{
    [XmlAttribute(AttributeName="name")]
    public String Name { get; set; }
}

我怎么能做到这一点只使用属性(如果可能的话?),但没有添加顶级

上面
元素,并保持类结构。我已经尝试与XmlArrayItem,但我不能得到部分元素。

Xml数组反序列化为c#对象,不需要顶级数组元素

在提出问题之前,我已经尝试了XmlArrayAttributeXmlArraItemAttribute与namedProperty的所有可能的组合,并且要使用的属性只是XmlElement。所以我是这样处理的:

只是在Config类的Sections属性之上添加了[XmlElement(ElementName="Section")]。更新如下:

  public class Head{
     public String Name {get;set;}
     public Config Config {get;set;}       
  }
  public class Config
  {       
      [XmlElement(ElementName="Section")]
      public Section[] Sections { get; set; }
  }
  public class Section
  {
      [XmlAttribute(AttributeName="name")]
      public String Name { get; set; }
  }