C# net xmlserializer:保持属性顺序
我可以成功地在xml文件中编写类项。但是祭品的顺序改变了 假设我有Item类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" /> 在网上怎么做 你不应该
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不适合人类阅读…这可能很愚蠢,但我想要订单只是因为一些“化妆品”好看…就这些…我个人不会介意的,就像你说的,这不是供人阅读的。但如果你真的想,我想这篇文章可能会涉及类似的东西