質問

このようなクラスがあります

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クラスを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top