Самый простой способ десериализации массива / последовательности объектов из XML с C #? - PullRequest
5 голосов
/ 09 марта 2011

У меня есть класс 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 объектов?

EDIT:

Как я делаю это для одного 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);

1 Ответ

5 голосов
/ 09 марта 2011

Насколько мне известно, для самых простых.Добавление другого класса Foos и удаление тега xmlroot из класса Foo.

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

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