gpt4 book ai didi

c# - 将自定义对象序列化为 XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:01 24 4
gpt4 key购买 nike

我正在尝试创建一个可以序列化以生成以下 XML 的类:

<chart palette='1'>
<categories>
<category label='2001' />
<category label='2002' />

..等等

我有一个看起来像这样的类:

[XmlRoot("chart")]
public class Chart
{
[XmlAttributeAttribute("palette")]
public string Palette;

[XmlElement("categories")]
public List<Category> Categories = new List<Category>();
}

[XmlRoot("category")]
public class Category
{
[XmlAttributeAttribute("label")]
public string Label;
}

但是,这不会产生所需的 chart->categories->category@label 结构。 Category 类的 XmlRoot 似乎没有被使用。这是我从该代码得到的输出:

 <chart palette="2">
<categories label="2002" />
</chart>

如何获得我想要的 XML 结构?

最佳答案

使用XmlArrayAttributeXmlArrayItemAttribute

[XmlRoot("chart")]
public class Chart
{
[XmlAttributeAttribute("palette")]
public string Palette;

[XmlArray("categories")]
[XmlArrayItem("category")]
public List<Category> Categories = new List<Category>();
}


public class Category
{
[XmlAttributeAttribute("label")]
public string Label;
}

有时只创建所需的 xml 结构,然后使用 xsd.exe 从中生成类可能很有用。这必须分两步完成,首先生成一个 xsd 文件,然后从中生成类。

xsd.exe something.xml
xsd.exe something.xsd /classes

这可能不会给出您想要的确切结果(除非您有一个非常好的 xsd,并且不只是从 xml 生成它),但确实提供了一些想法

关于c# - 将自定义对象序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/590914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com