gpt4 book ai didi

c# - 根级别集合上的 XML 对象序列化

转载 作者:行者123 更新时间:2023-11-30 22:33:21 24 4
gpt4 key购买 nike

尝试将来自第 3 方工具的 XML 文件反序列化为自定义软件类。问题是 XML 有点傻,因为“根”项实际上是集合的声明。我用 XMLArray 和其他定义做了很多定义序列化,但这似乎不起作用。我能做的最好的事情就是读入集合,但集合中的所有对象都没有用变量初始化。

这是我面临的一个例子:

XML:

<Animals>
<Animal>
<Name>Mr. Cow</Name>
<Type>Cow</Type>
</Animal>
<Animal>
<Name>Belle</Name>
<Type>Cow</Type>
</Animal>
<Animal>
<Name>Porky</Name>
<Type>Pig</Type>
</Animal>
</Animals>

然后我在我的“农场”对象中将我的 XMLRoot 定义为“动物”。并为我的“动物”类设置一个列表属性。如果我定义该属性(列出 AnimalCollection),我能得到的最好的是 3 个未启动的 Animal 对象的列表(没有设置任何值)。

在办公室里,我们能想到的最好的办法就是在尝试反序列化文件并照常使用它之前,将一个节点作为流添加到文件中,但显然这似乎是一个可怕的 hack。希望有一种我所缺少的更好的方法。

我也考虑过手动阅读文档...但还是希望有更优雅的方式。

最佳答案

XmlSerializer serializer = new XmlSerializer(typeof(Animal[]), new XmlRootAttribute("Animals"));

public class Animal
{
[XmlElement]
public string Name;
[XmlElement]
public string Type;
}

关于c# - 根级别集合上的 XML 对象序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358108/

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