代码之家  ›  专栏  ›  技术社区  ›  Matthew Dresser

序列化通用集合,为集合中的项指定元素名称

  •  0
  • Matthew Dresser  · 技术社区  · 15 年前

    我有一个简单的类,它从字符串的一般列表派生,如下所示:

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

    当我序列化它时,我得到以下XML:

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

    是否有任何方法重写用于序列化集合中的项的XML元素名称? 我希望生成以下XML:

    <TestItems>
      <TestItem>cat</TestItem>
      <TestItem>dog</TestItem>
      <TestItem>wolf</TestItem>
    </TestItems>
    
    2 回复  |  直到 10 年前
        1
  •  3
  •   Aaronaught    15 年前

    您不在类级别指定它,而是在属性级别指定它,并使用 XmlArrayItemAttribute :

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

    还要注意 [Serializable] 对XML序列化没有影响,它用于二进制或数据合同序列化。

        2
  •  0
  •   Community CDub    8 年前

    给出的答案并不总是适用于我,因为我需要直接从列表继承。我提出了一个类似的问题,并直接得到了这个答案。 Change XmlElement name for XML serialisation 你可以这样做。