Десериализация различных именованных узлов XML - PullRequest
0 голосов
/ 09 июня 2010

Есть ли способ конвертировать различные именованные узлы xml в один класс при десериализации XML

Пример XML:

<items>
    <aaa>value</aaa>
    <bbb>value</bbb>
</items>

Нормально я бы написал:

[XmlRoot("items")]
class Items
{
    [XmlElement("aaa")]
    public string aaa;

    [XmlElement("bbb")]
    public string bbb;
}

Но теперь я хотел бы сделать что-то вроде этого

[XmlRoot("items")]
class Items
{
    [XmlElement("aaa")]
    [XmlElement("bbb")]
    public List<string> item;
}

Мне бы очень хотелось, чтобы "aaa" и "bbb" были добавлены в один и тот же список.

1 Ответ

0 голосов
/ 09 июня 2010

Вы не можете сделать это во время десериализации - представьте, как эти ваши вторые объекты будут сериализованы в XML, если ваш подход был бы возможен ... как, черт возьми, XML-сериализатор узнает, когда и когда использовать «aaa» или "bbb" как тег элемента ......

Что вы можете сделать, это сделать прямую сериализацию сначала в сериализуемый тип объекта XML (со свойствами aaa и bbb), а затем, если вам действительно необходимо, создать отдельный объект, содержащий List<string> и стик все ваши данные там.

...