0

クラス Item を xml ファイルに正常に書き込むことができます。しかし、属性の順序は変わります...

Item クラスがあるとします

class Item
{
   Name
   Price
   Id

}

.net xmlserializer を使用して xml ファイルに書き込むと、次のようなクラス宣言とは異なる順序になります

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

しかし、私はこのようにしたい[宣言順を守る]

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

どうすればNETでそれを行うことができますか?

4

2 に答える 2

2

順序を気にする必要はありません。もしそうなら、あなたはあなたのxmlを適切に処理していません

セクション 3.1 「開始タグまたは空の要素タグの属性指定の順序は重要ではないことに注意してください。」

于 2012-07-12T12:56:56.203 に答える
0

属性の順序に関心がある場合は、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">

ご覧のとおり、コード行を切り替えると、順序が変更されます。

ただし、このインターフェイスを実装するとデフォルトのプロセスが上書きされ、シリアライゼーション/デシリアライゼーション プロセス全体を作成できるようになることに注意してください。

ノーシャスよろしく

于 2014-02-28T13:25:03.017 に答える