可能重复:
How to rename <ArrayOf> XML attribute that generated after serializing List of objects
这应该很简单,但我在这里遗漏了一些东西。序列化我的类时,我需要以下格式输出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>
我想用“Items”替换“ArrayOfItem”。另外,为什么我看到附加了“ArrayOf”?提前谢谢。
答案 0 :(得分:0)
当您获得类型为ArrayOfItem
List<Item>
的{{1}}类型时,您将获得Array
。当您对xml反序列化器进行反序列化时,这是标准类型Item
的数组。您可以为这样的格式序列化单个Item
,但它仍然不会相同。
如果您序列化单个项目,您将获得
Item
答案 1 :(得分:0)
为什么不使用 linq2Xml ..这很简单,很酷
XElement doc=new XElement("Items");
foreach(var item in items)
{
doc.Add(
new XElement("Item",
new XAttribute("Id",item.Id),new XAttribute("Name",item.Name)
)
);
}
doc.ToString();//your xml
<强>输出强>:
<items>
<item id="1" name="John">
<item id="2" name="Peter">
<item id="3" name="Shane">
<items>