2012-10-01 1 views
0

У меня есть XML-фрагмент, который выглядит следующим образом:Обработка нескольких полей с одним XML-тег в C# XmlSerializer

<object> 
    <field name="p1">Foo</field> 
    <field name="p2">Bar</field> 
    <field_list name="p3"> 
    <field_value>Me</field_value> 
    <field_value>Myself</field_value> 
    <field_value>I</field_value> 
    </field_list> 
</object> 

То, что я хотел бы сделать, это представить это в C# как словарь - ключи имена (p1, p2, p3), а значения представляют собой список строк - первые два (p1, p2) будут иметь один элемент, а третий (p3) будет иметь три элемента.

Этот документ Xml необходимо де-сериализовать. Как я могу это сделать и в конечном итоге с желаемым объектом?

+0

словарь не допускает повторного использования одного и того же ключа (т.е. ключ "p3" может отображаться только один раз), поэтому вам нужно будет определить его как словарь (или некоторый вариант IEnumerable ), чтобы поддерживать ваши данные. И учитывая, что Словарь не является сериализуемым (поскольку @akton прекрасно выглядит ниже), я не уверен, что это ваш лучший выбор. –

+1

A NameValueCollection позволит использовать повторяющиеся значения ключа, но я думаю, что он имеет похожие проблемы с сериализацией в словарь. –

ответ

1

Класс не сериализует Dictionary изначально. Однако существуют сторонние сериализаторы, такие как sharp serializer и one from Peter Welter.

Если вы хотите реализовать его самостоятельно без дополнительных библиотек, выполните IXmlSerializable и предоставите пользовательские реализации ReadXml и WriteXml.

Смотрите также:

Смежные вопросы