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

C# 从XML序列化数组中删除包装器元素,c#,.net,xml,visual-studio-2008,xml-serialization,C#,.net,Xml,Visual Studio 2008,Xml Serialization,我使用的是VSTS2008+C++.NET3.0。我使用下面的代码来序列化XML,我的对象包含数组类型属性,但是生成了一些额外的元素层(在我的示例中,是MyInnerObject和MyObject),我想从生成的XML文件中删除它们。有什么想法吗 当前生成的XML文件 <?xml version="1.0"?> <MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www

我使用的是VSTS2008+C++.NET3.0。我使用下面的代码来序列化XML,我的对象包含数组类型属性,但是生成了一些额外的元素层(在我的示例中,是MyInnerObject和MyObject),我想从生成的XML文件中删除它们。有什么想法吗

当前生成的XML文件

<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MyObjectProperty>
    <MyObject>
      <MyInnerObjectProperty>
        <MyInnerObject>
          <ObjectName>Foo Type</ObjectName>
        </MyInnerObject>
      </MyInnerObjectProperty>
    </MyObject>
  </MyObjectProperty>
</MyClass>
<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MyObjectProperty>
      <MyInnerObjectProperty>
          <ObjectName>Foo Type</ObjectName>
      </MyInnerObjectProperty>
  </MyObjectProperty>
</MyClass>
而不是

[XmlArrayItemAttribute]
使用:

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


这将基于xml生成test.cs,其中包含xml可序列化类。当然,如果您周围有一个.xsd,这会更好。

谢谢Sander,您的解决方案很有效。您能再描述一下为什么使用XmlArrayItemAttribute会影响结果XML吗?为什么XmlElement可以工作?它们之间只是有一个区别,允许您使用两种xml表示,XmlElement跳过属性名称并只输出元素,XmlArrayItem创建元素数组(使用propertyname命名)(使用您提供的名称命名)谢谢Sander,问题已回答。我还有一个问题,如果你能帮忙,我会非常感激。我已经看了这个问题,我认为答案是正确的,不能真正提高。我知道我参加聚会已经晚了,但是这个答案帮了我很大的忙!所以非常感谢你!
[XmlArrayItemAttribute]
[XmlElement]
xsd.exe test.xml
xsd.exe /classes test.xsd