Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化另一个元素中的0-n个元素_C#_.net_Xml Serialization_Xmlserializer - Fatal编程技术网

C# 序列化另一个元素中的0-n个元素

C# 序列化另一个元素中的0-n个元素,c#,.net,xml-serialization,xmlserializer,C#,.net,Xml Serialization,Xmlserializer,我有两门课是这样的: 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; } } 公共类产品 { 公共字符串名称{ge

我有两门课是这样的:

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; }
}
公共类产品
{
公共字符串名称{get;set;}
公共int Id{get;set;}
}
公共类类别
{
公共字符串CategoryName{get;set;}
公共列表产品{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>

独角兽的东西
1212
独角兽尘
1829
喇叭延伸
27373
带孔面罩
精灵
222
仙尘技术
请注意,每个类别都有类别元素(类别名称)和0-n个产品子元素

…还是我必须用更手动的方式生成文档


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

我相信XSD.exe可以从类中为您创建XSD。然后,只需使用基本XmlSerializer将其序列化到XSD


或者,您可以创建XSD,并从XSD生成类。任何一种方法都可以。

[xmlement]
属性放在列表中:

public class Category
{
    public string CategoryName { get; set; }
    [XmlElement]
    public List<Product> Products { get; set; }
}
公共类类别
{
公共字符串CategoryName{get;set;}
[XmlElement]
公共列表产品{get;set;}
}

当您尝试序列化它时会发生什么?John>>我得到一个Products元素,其中包含产品。如果您没有XSD,您可以使用诸如创建XSD之类的工具。我不能相信我在询问之前没有尝试过这一点。我已经在实际类中拥有了大约50个XmlElement属性。太好了,谢谢!:)@杰森:很高兴这有帮助。你能在你的问题中贴一个原始XML的例子吗?