在XML序列化期间跳过类层次结构级别

时间:2011-04-10 10:03:27

标签: c# xml-serialization

我想将一个类序列化为:

<?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 个答案:

答案 0 :(得分:2)

最外面的类叫做“root”。您必须使用[XmlRoot]进行设置。

然而,您还必须在文档上使用[XmlElement]而不是[XmlArrayItem],以使其成为根的子级别。