9

XmlElementには、XmlSerializerを使用してシリアル化するときに、プロパティの正確な順序(とにかく相互に関連する)を指定するために使用できる「Order」属性があります。

public class bookingList
{
    [XmlElement(Order = 1)]
    public string error { get; set; }
    [XmlElement(Order = 2)]
    public int counter { get; set; }
    [XmlElement(ElementName = "booking", Order = 3)]
    public List<booking> bookings = new List<booking>();
}

XmlAttributeにも同様のものがありますか?次のようなものから属性の順序を設定したいだけです

<MyType end="bob" start="joe" />

<MyType start="joe" end="bob" />

これは読みやすさのためだけで、私自身の利益です。

4

5 に答える 5

11

XMLでは属性に順序がないため、そうではありません(XML推奨のセクション3.1には、「開始タグまたは空の要素タグでの属性指定の順序は重要ではないことに注意してください」と記載されています)。

于 2010-04-12T15:51:16.700 に答える
10

私の経験から、属性のシリアル化の順序は、パブリックプロパティを定義する順序と同じです。ただし、プロパティを同じクラスのフィールドと組み合わせる場合、たとえば

[Serializable()]
public class MyClass
{
   [XmlAttribute("ADoubleProp")]
   public double ADoubleProp { get; set; }

   [XmlAttribute("AnIntField")]
   public int AnIntField = 42;
}

次に、フィールドは最初に属性として書き込まれ、次にプロパティとして書き込まれます。上記のコードは次のようなものを生成します

<MyClass AnIntField="42" ADoubleProp="0" />
于 2014-09-23T00:25:07.190 に答える
1

C#では、私が見つけた限りでは、属性の順序は、クラスで定義されている順序でシリアル化されます。

ここでこの質問に対する私の答えを参照してください:https ://stackoverflow.com/a/21468092/607117

于 2014-01-30T21:50:11.410 に答える
-1

XMLを動的に作成している場合は、属性をノードに追加する順序を変更してみてください。これで機能するはずです:)

于 2019-07-13T14:42:16.470 に答える
-1
xmlNode.Attributes.InsertAfter(newAttribute, refAttribute); 
xmlNode.Attributes.InsertBefore(newAttribute, refAttribute);
于 2020-12-11T14:25:54.167 に答える