Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# net xmlserializer:保持属性顺序_C#_.net_Xml Serialization - Fatal编程技术网

C# net xmlserializer:保持属性顺序

C# net xmlserializer:保持属性顺序,c#,.net,xml-serialization,C#,.net,Xml Serialization,我可以成功地在xml文件中编写类项。但是祭品的顺序改变了 假设我有Item类 class Item { Name Price Id } 当我使用.net xmlserializer将其写入xml文件时,我从类中得到不同的顺序,例如 <Item Price="y" Name="x" Id="z" /> 但我希望它是这样的[保持取消宽容的秩序] <Item Name="x" Price="y" Id="z" /> 在网上怎么做 你不应该

我可以成功地在xml文件中编写类项。但是祭品的顺序改变了

假设我有Item类

class Item
{
   Name
   Price
   Id

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

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

但我希望它是这样的[保持取消宽容的秩序]

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


在网上怎么做

你不应该对订单感到担忧。如果是,那么您没有正确处理xml

第3.1节“注意,属性规范在 开始标记或空元素标记不重要。“


如果您对属性的顺序很感兴趣,那么
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">

如您所见,如果在代码行之间切换,则顺序会改变

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

问候
这可能是一个愚蠢的问题,但由于这是xml,您应该使用xml库解析它。。。。为什么这很重要?我不依赖于订单人员…我只想在我的xml上有一些漂亮的外观…我知道xml不适合人类阅读…但我对“表单”很着迷,我希望它有一些顺序…我知道xml不适合人类阅读…这可能很愚蠢,但我想要订单只是因为一些“化妆品”好看…就这些…我个人不会介意的,就像你说的,这不是供人阅读的。但如果你真的想,我想这篇文章可能会涉及类似的东西