序列化一个泛型集合的集合中的项目指定元素名称 [英] Serialize a generic collection specifying element names for items in the collection

查看:159
本文介绍了序列化一个泛型集合的集合中的项目指定元素名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从字符串的泛型列表导出一个简单的类,如下所示:

  [Serializable接口]
[System.Xml.Serialization.XmlRoot(TestItems)]
公共类TemplateRoleCollection:列表<字符串>
{

}
 

当我序列化这一点,我得到了下面的XML:

 < TestItems>
  <字符串>猫< /串>
  <字符串>狗< /串>
  <字符串>狼< /串>
< / TestItems>
 

有没有什么办法来覆盖它用于集合中的序列化项目的XML元素的名称? 我想下面的XML待产:

 < TestItems>
  < TestItem>猫< / TestItem>
  < TestItem>狗< / TestItem>
  < TestItem>狼< / TestItem>
< / TestItems>
 

解决方案

您不要在类级别指定此,你在属性级别指定它,并使用的 XmlArrayItemAttribute

 公共类ContainerClass
{
    [XmlArray(TestItems)]
    [XmlArrayItem(TestItem)]
    公开名单<字符串> TemplateRoles {获得;组; }
}
 

另外请注意, [Serializable接口] 对XML序列化没有影响,它是用于二进制或DataContract序列化。

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.

这篇关于序列化一个泛型集合的集合中的项目指定元素名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆