【问题标题】:Simplest way to deserialize an Array/Sequence of objects from XML with C#?使用 C# 从 XML 反序列化对象数组/序列的最简单方法?
【发布时间】:2011-03-08 23:54:27
【问题描述】:

我有一个班级 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);

【问题讨论】:

  • 你写过任何使用 XmlSerializer 的代码吗?
  • @RQDQ 添加了一些示例,说明我如何为单个项目执行此操作,以及我如何认为它们可能会发生在一组项目中。

标签: c# xml serialization xml-serialization


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2020-02-17
    • 2014-05-14
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多