从XML序列化数组中删除包装元素

我使用的是VSTS2008 + C#+ .Net 3.0。 我使用下面的代码来序列化XML,我的对象包含数组类型属性,但是生成了一些其他元素的图层(在我的示例中,MyInnerObject和MyObject),我想从生成的XML文件中删除它们。 有任何想法吗?

当前生成的XML文件,

      Foo Type      

预期的XML文件,

     Foo Type    

目前的代码,

 public class MyClass { private MyObject[] _myObjectProperty; [XmlArrayItemAttribute(IsNullable=false)] public MyObject[] MyObjectProperty { get { return _myObjectProperty; } set { _myObjectProperty = value; } } } public class MyObject { private MyInnerObject[] _myInnerObjectProperty; [XmlArrayItemAttribute(IsNullable = false)] public MyInnerObject[] MyInnerObjectProperty { get { return _myInnerObjectProperty; } set { _myInnerObjectProperty = value; } } } public class MyInnerObject { public string ObjectName; } public class Program { static void Main(string[] args) { XmlSerializer s = new XmlSerializer(typeof(MyClass)); FileStream fs = new FileStream("foo.xml", FileMode.Create); MyClass instance = new MyClass(); instance.MyObjectProperty = new MyObject[1]; instance.MyObjectProperty[0] = new MyObject(); instance.MyObjectProperty[0].MyInnerObjectProperty = new MyInnerObject[1]; instance.MyObjectProperty[0].MyInnerObjectProperty[0] = new MyInnerObject(); instance.MyObjectProperty[0].MyInnerObjectProperty[0].ObjectName = "Foo Type"; s.Serialize(fs, instance); return; } } 

代替

 [XmlArrayItemAttribute] 

使用:

 [XmlElement] 

要在将来解决这个问题,您可以运行(从VS命令提示符):

 xsd.exe test.xml xsd.exe /classes test.xsd 

这将生成test.cs,其中包含基于xml的xml可序列化类。 如果你有一个.xsd,那么效果会更好