c# - 将 0-n 个元素序列化到另一个元素内

标签 c# .net xml-serialization xmlserializer

我有两个这样的类(class):

public class Product
{
    public string Name { get; set; }
    public int Id { get; set; }
}

public class Category
{
    public string CategoryName { get; set; }
    public List<Product> Products { get; set; }
}

有什么方法可以在 Category 类上装饰我的 Products 属性,以便它像这样序列化吗?

    <Container>
      <Category>
        <CategoryName>Unicorn Stuff</CategoryName>
        <Product>
          <Id>1212</Id>
          <Name>Unicorn Dust</Name>
        </Product>
        <Product>
          <Id>1829</Id>
          <Name>Horn Extension</Name>
        </Product>
        <Product>
          <Id>27373</Id>
          <Name>Facemask with hole</Name>
        </Product>
      </Category>
      <Category>
        <CategoryName>Pixie</CategoryName>
        <Product>
          <Id>222</Id>
          <Name>Pixie Dust</Name>
        </Product>    
      </Category>
    </Container>

请注意,每个类别都有类别元素(类别名称)和 0-n 个产品子元素。

...或者我是否必须以更手动的方式生成文档?

(这不是我设计 xml 结构的方式,但是嘿 - 我们生活在一个不完美的世界)

最佳答案

[XmlElement] 属性放在列表上:

public class Category
{
    public string CategoryName { get; set; }
    [XmlElement]
    public List<Product> Products { get; set; }
}

关于c# - 将 0-n 个元素序列化到另一个元素内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795672/

相关文章:

c# - .net c# asp.net 使文本框文本的一部分加粗

.NET 相当于 Qt 图形 View 框架吗?

c# - 以 XML 作为数据源的 Entity Framework 代码优先

c# - 在 C# datacontract 上反序列化枚举时出错

c# - TaskCanceledException 是否意味着发生了死锁?

c# - 为什么 Unity Event 以错误的方式工作?还是我?

c# - PHP 中的部分类就像我们在 C# 中一样

C# BinaryWrite 通过 SSL

c# - DataContract 不使用属性中指定的名称属性

c# - 从 VB.NET 访问 Twitter API