我正在使用ASP.NET MVC和MVCContrib的XmlResult。
我有一个Xxxx对象数组,我将其传递给XmlResult。
这被序列化为:
<ArrayOfXxxx>
<Xxxx />
<Xxxx />
<ArrayOfXxxx>
我希望看起来像这样:
<Xxxxs>
<Xxxx />
<Xxxx />
<Xxxxs>
有没有办法指定类在数组的一部分时如何序列化?
我已经在使用XmlType来更改显示名称,是否有类似的东西可以让你在数组中设置它的组名。
[XmlType(TypeName="Xxxx")]
public class SomeClass
或者,我是否需要为此集合添加包装类?
答案 0 :(得分:4)
这可以通过两种方式实现(使用包装器并在其上定义XmlRoot
属性,或将XmlAttributeOverrides
添加到序列化程序中。)
我以第二种方式实现了这个:
这是一个整数数组,我正在使用XmlSerializer
来序列化它:
int[] array = { 1, 5, 7, 9, 13 };
using (StringWriter writer = new StringWriter())
{
XmlAttributes attributes = new XmlAttributes();
attributes.XmlRoot = new XmlRootAttribute("ints");
XmlAttributeOverrides attributeOverrides = new XmlAttributeOverrides();
attributeOverrides.Add(typeof(int[]), attributes);
XmlSerializer serializer = new XmlSerializer(
typeof(int[]),
attributeOverrides
);
serializer.Serialize(writer, array);
string data = writer.ToString();
}
数据变量(包含序列化数组):
<?xml version="1.0" encoding="utf-16"?>
<ints xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<int>1</int>
<int>5</int>
<int>7</int>
<int>9</int>
<int>13</int>
</ints>
因此,ArrayOfInt
我们将ints
作为根名称。
有关XmlSerializer
的构造函数的更多信息,请参阅here。