更改XML Serializer的数组元素的元素名称

时间:2010-02-14 13:13:16

标签: c# .net xml xml-serialization

我有一个通过XSD.exe工具从XML文件生成的类。我的类包含一个包含元素的数组。

直到最近,从完全实例化的业务对象渲染整个文档是可能的,但是由于尺寸的原因,我们现在需要将文档数组元素渲染到流中,以便我们不会耗尽内存。

但是,在渲染数组元素时,XML序列化中会出现不同的元素名称。我试图创建一个XMLAttributesOverride,但这给我一个错误,指出我无法覆盖此属性上的XmlElement属性。我试图保持这种强类型并与我的XSD相关联,所以如果有人知道如何将XML元素的名称更改为他们的数组名称+1回答。

2 个答案:

答案 0 :(得分:11)

您是否尝试过使用XmlArray和XmlArrayElement属性?
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayattribute.aspx
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx

[XmlArrayItem(ElementName="GenericItem", Type = typeof(Item))]
[XmlArrayItem(ElementName="BookItem", Type = typeof(BookItem))]
[XmlArray]
public Item []Items {...}

答案 1 :(得分:5)

试试这个:)

[XmlType(TypeName="MyItems")]
public class MyItems:List<Item>
{   }

结果xml是:

<MyItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Item>...</Item>
</MyItems>