C#怎么在XML序列化时控制元素的顺序 [XmlElement(Order=n)]

admin 百科 10
XmlSerializer 中必须为同一层级所有可序列化的 public 成员显式指定 [XmlElement(Order = n)] 才能稳定控制 XML 元素顺序,未标注者排最后且顺序不确定;Order 仅作用于同级元素,不影响嵌套对象内部顺序。

C#怎么在XML序列化时控制元素的顺序 [XmlElement(Order=n)]-第1张图片-佛山资讯网

在 C# 中用 XmlSerializer 序列化对象时,默认按类中字段/属性声明顺序输出 XML 元素。但这个顺序不总是可靠(比如受编译器优化、反射遍历顺序影响),真正稳定控制元素顺序的方式是显式使用 [XmlElement(Order = n)] 特性。

必须为所有可序列化的成员显式指定 Order

Order 值越小,元素在 XML 中越靠前;相同 Order 值的成员按反射顺序排列(不可依赖)。关键点是:只要用了 Order,就得给同一层级所有参与序列化的 public 字段/属性都加上,否则未标注的成员会被排在最后(且顺序不确定)

例如:

public class Person
{
    [XmlElement(Order = 1)]
    public string Name { get; set; }
<pre class='brush:php;toolbar:false;'>[XmlElement(Order = 2)]
public int Age { get; set; }

[XmlElement(Order = 3)]
public string Email { get; set; }

登录后复制

}

生成的 XML 就会严格是 <name>...</name><age>...</age><email>...</email>

Order 只对同级元素有效,不跨嵌套层级

Order 控制的是当前类直接序列化出的子元素顺序,不会影响嵌套对象内部的顺序。嵌套对象的顺序由它自己的类定义决定。

比如:

标签: ai c# 排列

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~