自定义配置文件,包含子元素而不是属性

时间:2010-08-19 21:46:59

标签: xml xml-serialization web-config app-config

我正在制作app.config和web.config的自定义部分以读取配置。我正在关注http://consultingblogs.emc.com/pauloreichert/archive/2005/05/31/1514.aspx的代码以获取我的示例。问题是,我的配置文件生成如下:

<configSections>
    <section name="BizDays" type="Holidays.BizDaysSection, Holidays, Version=1.0.3883.29809, Culture=neutral, PublicKeyToken=null" />
</configSections>
<BizDays>
  <Holidays>
    <Holiday Name="New Years Day" Day="1" Month="1" />
    <Holiday Name="MLK Day" Month="1" DayOfWeek="1" WeekOfMonth="3" />
  </Holidays>
</BizDays>

我想要的是这样的代码:

<BizDays>
  <Holidays>
    <Holiday Name="New Years Day">
      <Day>1</Day>
      <Month>1 </Month>
    </Holiday>
    <Holiday Name="MLK Day">
      <Day>1</Day>
      <DayOfWeek>1</DayOfWeek>
      <WeekOfMonth>3</WeekOfMonth>
    </Holiday>
  </Holidays>
</BizDays>

我在网上找到的所有例子都没有显示如何做到这一点。

1 个答案:

答案 0 :(得分:0)

如果不阅读已链接的文档,Name似乎被正确指定为XMLAttribute。 Day,DayOfWeek等应该是XMLElements。

例如,创建以下类的实例并对其进行序列化将产生您所追求的结果:

public class Holiday
{
    [XmlAttribute]
    public string Name;
    [XmlElement]
    public int Day;
    [XmlElement]
    public int Month;
}

由于XmlElement是默认值,因此可以将其关闭。