くだらないタイトルでごめんなさい。自由に変更してください。
問題は次のとおりです。次のようなXMLファイルのセットを読み取る必要があります。
<rootElement>
<header>
<!-- some stuff here -->
</header>
<businessContent>
<oneOfSeveralAllowedSubNodesHereLikeCustomer />
<businessContent>
</rootElement>
取得xsd.exe
したスキーマファイルからC#クラスを生成する必要があり、そのように実行されました(簡略化)。
public class rootElement
{
public header header {get;set;}
public object businessContent {get;set;}
}
// other classes like header and classes for the values
// allowed within business content, say customer
のタイプは十分に公平であることに注意してbusinessContent
くださいSystem.Object
。スキーマは、実際にそこに何を入れることができるかについて明確に何も述べていません。customer
しかし、私はその中にあるxmlファイルを持っていますbusinessContent
。顧客はxsdで定義され、そのxsd.exe
ためのクラスも生成されます。このクラスのインスタンスが作成され、自分のものとして配置されることを期待しますがbusinessContent
、XMLを読み取ると次のようになります。
var serializer = new XmlSerializer(typeof(rootElement));
var root = (rootElement)serializer.Deserialize(stream));
var customer = (customer)root.businessContent;
root.businessContent
のタイプがであり、ではXmlNode[]
ないため、例外が発生しcustomer
ます。
では、オブジェクトを完全に逆シリアル化するようにシリアライザーを作成するにはどうすればよいcustomer
ですXmlNode[]
か?