我有两个这样的课程:
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 Product子元素。
...或者我是否需要以更加手动的方式生成文档?
(这不是我设计xml结构的方式,但嘿 - 我们生活在一个不完美的世界)
答案 0 :(得分:5)
将[XmlElement]
属性放在列表中:
public class Category
{
public string CategoryName { get; set; }
[XmlElement]
public List<Product> Products { get; set; }
}
答案 1 :(得分:0)
我相信XSD.exe可以为您的班级创建XSD。然后,您只需使用基本的XmlSerializer序列化到XSD。
或者,您可以创建XSD,并从XSD生成您的课程。无论哪种方式都应该有效。