gpt4 book ai didi

c# - 将简单的 xml 反序列化为 List

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:22 30 4
gpt4 key购买 nike

我知道这是一个非常愚蠢的问题,但我被卡住了......(类似的问题没有有用的答案 here )

我的xml是

<Param>
<MyList>
<mynode>aaa</mynode>
<mynode>bbb</mynode>
<mynode>ccc</mynode>
<mynode>ddd</mynode>
</MyList>
</Param>

我有这样的类(class)

public class MyClass
{
[XmlArray("MyList")]
[XmlArrayItem("mynode")]
public List<string> MyList { get; set; }
}

但是当我尝试反序列化时,我得到了一个 nullerroreexception

为什么这不起作用?

编辑:反序列化代码:

public static Param InitConfig(string Path)
{
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "Param";
xRoot.IsNullable = true;

XmlSerializer serializer = new XmlSerializer(typeof(Param), xRoot);
using (StreamReader reader = new StreamReader(Path))
{
return (Param)serializer.Deserialize(reader);
}
}

public class Param
{
public MyClass MyClass {get; set;}
}

(其实更复杂)

最佳答案

如果没有看到实际执行序列化的代码,就很难找到错误。但是,您可以尝试告诉序列化程序什么是 xml 的顶级元素:

[XmlRoot("Param")]
public class MyClass
{
[XmlArray("MyList")]
[XmlArrayItem("mynode")]
public List<string> MyList { get; set; }
}

编辑:序列化程序的类型应为 MyClass:

public static Param InitConfig(string Path)
{
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "Param";
xRoot.IsNullable = true;

XmlSerializer serializer = new XmlSerializer(typeof(MyClass), xRoot);
using (StreamReader reader = new StreamReader(Path))
{
return new Param {MyClass = (MyClass)serializer.Deserialize(reader)};
}
}

关于c# - 将简单的 xml 反序列化为 List<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477401/

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