Я хочу сериализовать следующую структуру XML:
<XmlRootElement>
<Company name="Acme Widgets LLC">
<DbApplication name="ApplicationA" vendor="oracle">
<ConnSpec environment="DEV"
server="DBOraDev1201"
database="AppA"
userId="MyUser"
password="5613456#6%^%$%$#" />
<ConnSpec environment="QA"
server="DBOraQA1205"
database="AppA"
userId="MyUser"
password="5613456#6%^%$%$#" />
</DbApplication>
<DbApplication name="AnotherApp" "vendor="SQLServer">
<ConnSpec environment="DEV"
server="DBMsSqlDev1201"
catalog="AnoptherApp"
userId="MyUser"
password="5613456#6%^%$%$#" />
<ConnSpec environment="QA"
server="DBMsSqlQA1565"
catalog="AnotherApp"
userId="MyUser"
password="5613456#6%^%$%$#" />
</DbApplication>
</Company>
<Company name = "ExpertSoftware Inc" ....
...
</Company>
</XmlRootElement>
но я обнаружил в текст ссылки
Цитата сверху ссылка:
...
- В: Почему не все свойства
коллекции классов сериализованы?
- A: XmlSerializer только сериализует
элементы в коллекции, когда
он обнаруживает либо IEnumerable, либо
интерфейс ICollection. это
Поведение - это дизайн. Единственная работа
вокруг, чтобы перестроить обычай
сбор на два класса, один из
который выставляет свойства
в том числе один из чистой коллекции
типы.
...
после обнаружения, что вы не можете сериализовать или десериализовать коллекцию, в которой есть другие атрибуты Xml ... Предлагаемый обходной путь - отделить элемент, имеющий коллекцию, от элементов, имеющих другие атрибуты ... Вы должны изменить структуру так, чтобы она выглядела следующим образом:
<XmlRootElement>
<Companys>
<Company name="Acme Widgets LLC">
<DbApplications>
<DbApplication name="ApplicationA" vendor="oracle">
<ConnSpecs>
<ConnSpec environment="DEV"
server="DBOraDev1201" ... />
<ConnSpec environment="QA"
server="DBOraQA1205"
database="AppA" ... />
</ConnSpecs>
</DbApplication>
<DbApplication name="AnotherApp" "vendor="SQLServer">
<ConnSpecs>
<ConnSpec environment="DEV" ... />
<ConnSpec environment="QA" ... />
</ConnSpecs>
</DbApplication>
</DbApplications>
</Company>
<Company name = "ExpertSoftware Inc" ....
...
</Company>
</Companys>
</XmlRootElement>
Кто-нибудь знает, почему это так? или есть ли другой способ сделать это?