在c#中保持xml元素在序列化和反序列化之间的顺序

本文关键字:反序列化 之间 顺序 序列化 元素 xml | 更新日期: 2023-09-27 18:06:27

我已经从Xml模式生成了一个c#类。这个类在工具中用于执行以下操作:

  1. 通过反序列化读取Xml
  2. 对反序列化对象进行某些更改。
  3. 通过序列化将处理过的反序列化对象写入Xml。

基本上我在xml中填充了一些数据。

我在保留反序列化和序列化之间某些元素的顺序方面有问题。

我有下面的示例代码。fPNodeTypeWindowField和fPNodeTypeClass1Field可以在两个xml中互换出现。这些字段的顺序在Xml中是不固定的。在反序列化过程中读取Xml时,我没有遇到任何问题。这些字段的顺序遵循代码中提到的顺序。

是否有任何可能的解决方案来保留这些字段的顺序在Xml中?

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class FPNodeTypeClass
{
    private string helpTextField;
    private FpxFPTreeFPNodeTypeRootFPNodeTypeWindow[] fPNodeTypeWindowField;
    private FPNodeTypeClass[] fPNodeTypeClass1Field;
    private string nameField;
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string HelpText
    {
        get
        {
            return this.helpTextField;
        }
        set
        {
            this.helpTextField = value;
        }
    }
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("FPNodeTypeWindow")]
    public FpxFPTreeFPNodeTypeRootFPNodeTypeWindow[] FPNodeTypeWindow
    {
        get
        {
            return this.fPNodeTypeWindowField;
        }
        set
        {
            this.fPNodeTypeWindowField = value;
        }
    }
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("FPNodeTypeClass")]
    public FPNodeTypeClass[] FPNodeTypeClass1
    {
        get
        {
            return this.fPNodeTypeClass1Field;
        }
        set
        {
            this.fPNodeTypeClass1Field = value;
        }
    }
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string name
    {
        get
        {
            return this.nameField;
        }
        set
        {
            this.nameField = value;
        }
    }
}

在c#中保持xml元素在序列化和反序列化之间的顺序

我自己刚刚发现顺序可以在序列化时固定。它不能是动态的