Possible Duplicate:
How to rename <ArrayOf> XML attribute that generated after serializing List of objects
This should be really simple but I am missing something here. I need output xml in the below format when serializing my class.
<items>
<item id="1" name="John">
<item id="2" name="Peter">
<item id="3" name="Shane">
<items>
Here is the class:
public class Item
{
[XmlAttribute]
public string Id;
[XmlAttribute]
public string Name;
}
Here is my test code:
var items = new List<Item>();
for (int i = 0; i < 4; i++)
{
var item = new Item();
item.Id = i.ToString();
item.Name = "Jeff" + " - " + i.ToString();
items.Add(item);
}
Ser(items);
static void Ser(object o)
{
XmlSerializer x = new XmlSerializer(o.GetType());
var xns = new XmlSerializerNamespaces();
xns.Add(string.Empty, string.Empty);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
XmlWriter writer = XmlWriter.Create(Console.Out, settings);
x.Serialize(writer, o, xns);
Console.WriteLine();
}
Output I am getting is:
<ArrayOfItem>
<Item Id="0" Name="Jeff - 0" />
<Item Id="1" Name="Jeff - 1" />
<Item Id="2" Name="Jeff - 2" />
<Item Id="3" Name="Jeff - 3" />
</ArrayOfItem>
I want to replace "ArrayOfItem" with "Items". Also, why am I seeing "ArrayOf" appended? Thanks in advance.