Пропустить уровень иерархии классов во время сериализации XML - PullRequest
0 голосов
/ 10 апреля 2011

Я хочу сериализовать класс в:

<?xml version="1.0" encoding="utf-8"?>
<documents>
  <document>
    <element />
    ...
  </document>
  ....
</documents>

Я экспериментировал со следующей иерархией классов:

public class A
{
    [XmlArrayItem("document")]
    public List<B> documents = new List<B>();
}

public class B
{
    public string id;

    [XmlArray("element")]
    public List<C> elements = new List<C>();
}

public class C
{
    public string name;
    public string value;
}

К сожалению, я получаю:

<?xml version="1.0" encoding="utf-8"?>
<A>
  <documents>
    <document>
      <element />
    </document>
  </documents>
</A>

Итак, как мне избавиться от "A", то есть имени типа самого внешнего класса?

Более широкий вопрос: как это можно обобщить?Как я могу пропустить произвольные «уровни» в иерархиях моих классов во время сериализации?

1 Ответ

2 голосов
/ 10 апреля 2011

Самый внешний класс называется «корнем».Вы должны использовать [XmlRoot], чтобы установить его.

Однако тогда вы также должны использовать [XmlElement] в документах вместо [XmlArrayItem], чтобы сделать его подуровнем корня.

...