c# - 使用 C# 从 XML 反序列化对象数组/序列的最简单方法?

标签 c# xml serialization xml-serialization

我有一个类 Foo(假设正确的 using 指令)

namespace Example
{
    [XmlRoot("foo")]
    class Foo
    {
        public Foo() {}

        [XmlElement("name")]
        public string Name;
    }
}

XmlSerializer 可以像这样处理 XML 以生成 Foo 类型的对象

<foo>
    <name>BOSS</name>
</foo>

要使 XmlSerializer 处理这种形式的 XML,我可以做的最少工作量是多少,

<foos>
    <foo>
        <name>BOSS</name>
    </foo>
    <foo>
        <name>NOT A BOSS</name>
    </foo>
</foos>

并生成一个 Foo 对象数组?

编辑:

我是如何为单个 Foo 做的:

var xr = new XmlTextReader("foo.xml");
var xs = new XmlSerializer(typeof(Foo));
var a = (Foo) xs.Deserialize(xr);

Foo[] 的潜在示例

var xr = new XmlTextReader("foos.xml");
var xs = new XmlSerializer(typeof(Foo[]));
var a = (Foo[]) xs.Deserialize(xr);

最佳答案

据我所知,这是最简单的。添加另一个类 Foos 并从类 Foo 中删除 xmlroot 标记。

namespace Example
{
    [XmlRoot("foos")]    
    class Foos
    {
        public Foos() {}

        [XmlElement("foo")]
        public List<Foo> FooList {get; set;}
    }
}

关于c# - 使用 C# 从 XML 反序列化对象数组/序列的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239823/

相关文章:

c# - 枚举上的 JsonConverter 属性打破了 asp.net 核心模型绑定(bind)

c# - 验证大整数的二进制模式 (BigInteger)

java - Android:使应用程序适应小屏幕布局,包括其他布局

PHP反序列化问题

.net - 如何仅序列化某些对象属性

c# - 将字符串转换为 C# 可执行代码

c# - 如何使用 Selenium 检查复选框状态?

java - 识别 <xsl :value-of> context item/node 的值

java - 多个 html 作为 1 xsl 与 java 的输出

java - Google Protobuf 反序列化重复对象上 get 操作的时间复杂度