タイトルが長いかもしれませんが、私が意味するものを説明させてください。私が実際に必要とするXMLをあなたに提供するつもりはありませんが、私が直面している問題を示すものを提供します。XMLシリアル化:同じ要素名を使用するが、属性に異なる値を持つクラスを区別するにはどうすればよいですか?
私はこのようなXMLを持っている:
<root>
<creatures>
<creature type="mammal" name="lion">
<sound>roarr</sound>
</creature>
<creature type="bird" name="parrot">
<color>red</color>
</creature>
</creatures>
</root>
は、以下のクラスを想像:
は(もちろんこれらは、いずれかの私の本当のクラスではありませんが、あなたはポイントを得る。)
public class Creature
{
public string Name { get; set; }
}
public class MammalCreature : Creature
{
public string Sound { get; set; }
}
public class BirdCreature : Creature
{
public string Color { get; set; }
}
属性を持つXMLシリアル化を使用して、シリアライザがタイプMammalCreature
とBirdCreature
をtype
属性で区別するようにしたいと考えています。
xsi:type
属性をタイプ名に設定することで、これを行うことができる解決策が見つかりましたが、私のケースでこれを行う実際の解決策があるかどうかを知りたいと思います。
+1あなたの答えをありがとう!ええ、私はKISSソリューションを探していましたが、IXmlSerializableを実装すると解決策が得られると思いました。おそらく、スキーマを作成した人に属性ベースのXMLシリアライゼーションでサポートされている方法に変更するよう説得するでしょう。 – Venemo
この回答が掲載された後はこれが長いことは分かっていますが、私はこのようなやり方でいくつか問題があります。 – Hewins
@Hewinsそれから、あなたがやったこととあなたが直面している正確な問題を新しい質問に投稿するべきです。 –