序列化:如何获取.NET中每个元素的唯一名称?

时间:2012-01-18 18:06:11

标签: c# .net serialization

在序列化类时我得到了这种格式的xml。

<Root Name="blah">
  <Element>1</Element>
  <Element>2</Element>
  <Element>3</Element>
  <Element>4</Element>
</root>

我的班级是

public class Root
{
    public List<data> Element { get; set; }
}

但我需要格式化数据:

<Root Name="blah">
  <Element0>1</Element0>
  <Element1>2</Element1>
  <Element2>3</Element2>
  <Element3>4</Element3>
</root>

请帮忙......

2 个答案:

答案 0 :(得分:3)

这对于常规序列化器来说并不合适;并且实现IXmlSerializable是过度的。

只需为您需要的东西创建一个DOM;一个好的起点是XElement:

var el = new XElement(
    new XAttribute("Name", obj.Name),
    obj.Element.Select((i,child) =>
        new XElement("Element" + i, child))
);
var xml = el.ToString();

(未测试的)

答案 1 :(得分:0)

我不确定你是否可以使用XML序列化程序自动完成。

您确定将节点编号设置为属性是不可接受的,还是可能会将节点分解为以下语法?

<Element>
    <Order>0</Order>
    <Value>1</Value>
</Element>