开发者

Serialize a generic collection specifying element names for items in the collection

开发者 https://www.devze.com 2022-12-29 23:24 出处:网络
I have a simple class derived from a generic list of string as follows: [Serializable] [System.Xml.Serialization.XmlRoot(\"TestItems\")]

I have a simple class derived from a generic list of string as follows:

[Serializable]
[System.Xml.Serialization.XmlRoot("TestItems")]
public class TemplateRoleCollection : List<string>
{

}

when I serialize this,开发者_运维技巧 I get the following XML:

<TestItems>
  <string>cat</string>
  <string>dog</string>
  <string>wolf</string>
</TestItems>

Is there any way to override the xml element name which is used for serializing items in the collection? I would like the following xml to be produced:

<TestItems>
  <TestItem>cat</TestItem>
  <TestItem>dog</TestItem>
  <TestItem>wolf</TestItem>
</TestItems>


You don't specify this at the class level, you specify it at the property level and use the XmlArrayItemAttribute:

public class ContainerClass
{
    [XmlArray("TestItems")]
    [XmlArrayItem("TestItem")]
    public List<string> TemplateRoles { get; set; }
}

Also note that [Serializable] has no effect on XML serialization, it is used for binary or DataContract serialization.


The answer given did not always work for me as I needed to inherit directly from List. I posted a similar question and got directed to this answer Change XmlElement name for XML serialisation which allows you to do that.

0

精彩评论

暂无评论...
验证码 换一张
取 消