Получить имя XmlElementAttribute после десериализации - PullRequest
0 голосов
/ 25 октября 2011

Я не нашел никакой информации по этому вопросу, может быть, кто-то может помочь.

У меня есть XML (упрощенный для удобства):

<content>
  <field1>value</field1>
  <field2>
    <field3>value</field3>
  </field2>
</content>

Я пытаюсь десериализовать его, используя такиеклассы:

[XmlRoot("content")]
public class Content
{
    [XmlElement]
    public List<Item> Fields { get; set; }
}

public class Item
{

    [XmlElement]
    public List<Item> Fields { get; set; }

    [XmlText]
    public String Value { get; set; }
}

У меня два вопроса:

  1. Могу ли я узнать фактическое название поля?Как [XmlName] string name; в классе Item?Или какой-то атрибут для самого класса?По некоторым причинам невозможно установить имя узла равным «field» и добавить атрибут «type» ;-) Хотя процесс создания класса и сериализации действительно сложен, я бы предпочел не реализовывать свой собственный сериализатор.

  2. Можно ли добавить подстановочный знак, например [XmlElement ("field *")]?Я не могу проверить это, пока не узнаю ответ на первый вопрос, поэтому, если есть лучший вариант, я бы тоже хотел узнать это.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Вы можете установить имя соответствующего XMl-элемента или атрибута в конструкторе атрибута

[XmlAttribute("FieldAsAttribute")]

-> Сериализует / десериализует свойство в атрибут Xml FieldAsAttribute или

[XmlElement("FieldAsElement")]

-> Сериализует / десериализует свойство в элемент XML FieldAsElement

0 голосов
/ 10 октября 2012

Единственный ответ здесь заключается в том, что это, к сожалению, невозможно.

В результате мы написали нашу собственную процедуру сериализации.

...