問題
以下のような構造の XML を使用していますが、<value>
タグには複数のタイプのデータを含めることができ、ネストされた値を持つ場合があるため、問題が発生しています。抽象クラスを使用しListItem
て値をいくつかの異なる型にしようとしましたが、XmlSerializer が異なるシールされたクラスから選択する何らかの方法でそれを平手打ちする必要があるため、機能しないようです。これはできません。
<listContainer>
<listItem>
<value>
<boolean>true</boolean>
</value>
</listItem>
<listItem>
<value>1</value>
</listItem>
<listItem>
<value>HAI IM A STRING!</value>
</listItem>
</listContainer>
その他の注意事項
- また、XmlReaderReader ( http://msdn.microsoft.com/en-us/library/t2abc1zd(v=vs.71).aspx ) を作成して、可能であればネストされたタグにドリルダウンしようとしましたが、そうではないようです実行可能なソリューションに。
- XML の形式を変更できません。サード パーティのフィードからのものです。
- XML ファイルは数ギガバイトのオーダーです。私は BufferedStream を使用しており、デフォルトの XmlSerializer に渡された前方専用の XmlReader を使用して、パフォーマンス上の理由から読み取り/逆シリアル化を実行しています。
- これはルートレベルの XML ではなく、他のいくつかのノード内にネストされていますが、これを正しくシリアル化する方法についてのアドバイスだけが必要です。
コード
public class listContainer {
[XmlArray(ElementName="listItem")]
[XmlArrayItem(Type=typeof(listItem), ElementName="listItem")]
public List<listItem> listItem { get; set; }
}
public class listItem {
// ... help ...
}