XMLシリアル化に配列インデックスを含める
-
03-07-2019 - |
質問
このようなクラスがあります
public class SomeClass
{
public SomeChildClass[] childArray;
}
次のようにXMLSerializerからXMLを出力します:
<SomeClass>
<SomeChildClass>
...
</SomeChildClass>
<SomeChildClass>
...
</SomeChildClass>
</SomeClass>
しかし、XMLは次のようになります。
<SomeClass>
<SomeChildClass index=1>
...
</SomeChildClass>
<SomeChildClass index=2>
...
</SomeChildClass>
</SomeClass>
インデックス属性が配列内のアイテムの位置と等しい場合。
&quot; XMLAttribute&quot;を使用して、SomeChildClassにインデックスプロパティを追加できます。属性ですが、オブジェクトをシリアル化する前に、配列をループしてその値を設定することを忘れないでください。
追加できる属性や、自動的にインデックス属性を生成する他の方法はありますか?
解決
最良のアプローチは、あなたが言ったことを実行し、プロパティを&quot; SomeChildClass&quot;に追加することです。このように
[XmlAttribute("Index")]
public int Order
{ { get; set; } }
ただし、これらのアイテムを配列に追加する場合は、このプロパティが設定されていることを確認してください。その後、シリアライズすると.... Presto!
他のヒント
これを行うには、System.Xml.Serialization.IXmlSerializableの実装を検討する必要がある場合があります。
XmlAttributeOverridesクラスを確認できます。
所属していません StackOverflow