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

Spe*_*nce 2 .net c# xml xml-serialization

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

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

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

Zyp*_*rax 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 {...}
Run Code Online (Sandbox Code Playgroud)


小智 5

试试这个 :)

[XmlType(TypeName="MyItems")]
public class MyItems:List<Item>
{   }
Run Code Online (Sandbox Code Playgroud)

结果xml是:

<MyItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Item>...</Item>
</MyItems>
Run Code Online (Sandbox Code Playgroud)