重複の可能性:
オブジェクトのリストをシリアル化した後に生成された <ArrayOf> XML 属性の名前を変更する方法
これは本当に単純なはずですが、ここで何かが欠けています。クラスをシリアル化するときに、以下の形式で出力 xml が必要です。
<items>
<item id="1" name="John">
<item id="2" name="Peter">
<item id="3" name="Shane">
<items>
クラスは次のとおりです。
public class Item
{
[XmlAttribute]
public string Id;
[XmlAttribute]
public string Name;
}
ここに私のテストコードがあります:
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();
}
私が得ている出力は次のとおりです。
<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>
「ArrayOfItem」を「Items」に置き換えたい。また、「ArrayOf」が追加されているのはなぜですか? 前もって感謝します。