更改XML序列化程序的数组元素的名称

问题描述:

我有一个类,它是通过XSD.exe工具从XML文件生成的。我有一个包含元素的数组。更改XML序列化程序的数组元素的名称

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

但是,当您渲染数组元素时,您将在XML序列化中获得不同的元素名称。我尝试创建一个XMLAttributesOverride,但是这返回了一个错误,指出我无法重写此属性上的XmlElement属性。我试图保持这种强类型和与我的XSD相关,所以如果有人知道如何将XML元素的名称更改为他们的数组名称+1答案。

+0

您应该能够使用替代。显示您使用的代码会产生错误。 – Cheeso 2010-02-16 02:00:49

您是否尝试过使用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 {...} 
+0

问题是XML架构不受我控制。因此,我试图尽可能避免在类中编辑代码。 – Spence 2010-02-14 20:48:19

+0

很好地工作 - 谢谢。 – 2010-05-07 15:22:03

试试这个:)

[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>