0

我可以成功地将我的类 Item 写入 xml 文件。但是属性的顺序改变了......

假设我有 Item 类

class Item
{
   Name
   Price
   Id

}

当我使用 .net xmlserializer 将它写入 xml 文件时,我从我的类 decleration 中得到不同的顺序,例如

<Item Price="y" Name="x"  Id="z"  />

但我想要这样 [保持 decleration order]

<Item Name="x" Price="y" Id="z"  />

我怎么能在 NET 中做到这一点?

4

2 回答 2

2

你不应该关心订单。如果是,那么您没有正确处理您的 xml

第 3.1 节“请注意,开始标签或空元素标签中属性规范的顺序并不重要。”

于 2012-07-12T12:56:56.203 回答
0

您热衷于属性的顺序,那么IXmlSerializable界面将使您控制类的序列化/反序列化过程。属性的顺序由代码行的顺序决定:

public void WriteXml(XmlWriter writer)
{
  //First example xml element
  writer.WriteStartElement("Item1");
  writer.WriteAttributeString("Name", Name);
  writer.WriteAttributeString("Price", Price);
  writer.WriteAttributeString("Id", Id);
  writer.WriteEndElement();

  //Second example xml element
  writer.WriteStartElement("Item2");
  writer.WriteAttributeString("Price", Price);
  writer.WriteAttributeString("Id", Id);
  writer.WriteAttributeString("Name", Name);
  writer.WriteEndElement();
}

输出:

<Item1 Name="x" Price="y" Id="z">
<Item2 Price="y" Id="z" Name="x">

如您所见,如果您切换代码行,则顺序会更改。

但请注意,实现此接口会覆盖默认过程,让您自己编写整个序列化/反序列化过程。

小心谨慎

于 2014-02-28T13:25:03.017 回答