XmlSerializer が定義された順序で XML を出力する方法はありますか?
-
03-07-2019 - |
質問
現在、XmlSerializer を使用してオブジェクトをシリアル化および逆シリアル化しています。XML が未定義の順序で生成されることは理解できますが、プロパティの順序が毎回異なるため、オブジェクトのバージョンを比較するときに面倒になります。したがって、たとえば、通常の差分ツールを使用して違いを確認することはできません。
ReadXml メソッドと WriteXml メソッドを自分で作成せずに、毎回同じ順序で XML を生成する簡単な方法はありますか?クラスには多くのプロパティがあり、新しいプロパティを時々追加するので、そのコードを作成して保守する必要がないことを望みます。
(C#.net 2.0)
解決
XmlElement属性には、 orderプロパティ。これを開始として使用できます。
Xmlファイルでdiffを見つける必要がある場合は、これ。
他のヒント
XmlElementAttribute 、 Order パラメーターを設定する。
ps:XmlSerializer によって生成された XML の順序が未定義であるとは思えません。文書化されていないかもしれませんが、知られています。Order 属性がない場合、XmlSerializer はすべてのパブリック プロパティをプロパティ名でアルファ ソートしてシリアル化し、次にすべてのパブリック フィールドを名前でアルファ ソートしてシリアル化すると思います。
所属していません StackOverflow