using XmlArrayItem attribute without XmlArray on Serializable C# class

Viewed 38598

I want XML in the following format:

<configuration><!-- Only one configuration node -->
  <logging>...</logging><!-- Only one logging node -->
  <credentials>...</credentials><!-- One or more credentials nodes -->
  <credentials>...</credentials>
</configuration>

I'm trying to create a class Configuration that has the [Serializable] attribute. To serialize the credentials nodes, I have the following:

[XmlArray("configuration")]
[XmlArrayItem("credentials", typeof(CredentialsSection))]
public List<CredentialsSection> Credentials { get; set; }

However, when I serialize this to XML, the XML is in the following format:

<configuration>
  <logging>...</logging>
  <configuration><!-- Don't want credentials nodes nested in a second
                      configuration node -->
    <credentials>...</credentials>
    <credentials>...</credentials>
  </configuration>
</configuration>

If I remove the [XmlArray("configuration")] line, I get the following:

<configuration>
  <logging>...</logging>
  <Credentials><!-- Don't want credentials nodes nested in Credentials node -->
    <credentials>...</credentials>
    <credentials>...</credentials>
  </Credentials>
</configuration>

How can I serialize this the way I want, with multiple <credentials> nodes within the single root node <configuration>? I wanted to do this without having to implement IXmlSerializable and do custom serialization. This is how my class is described:

[Serializable]
[XmlRoot("configuration")]
public class Configuration : IEquatable<Configuration>
1 Answers
Related