厳密に型指定された DataSet と、xsd.exe で生成された対応するクラスがあります。
XML シリアライゼーション/デシリアライゼーションを使用して、DataSet コンテンツを一致するクラスに渡したいと考えていました。
次のようなものを使用する場合:
MyStronglyTypedDataSet ds = new MyStronglyTypedDataSet();
//... fill the dataset...
ds.WriteXml(@"C:\Temp\somedata.xml");
FileStream fs = new FileStream(@"C:\Temp\somedata.xml", FileMode.Open);
XmlSerializer serial = new XmlSerializer(typeof(MyDataSetMatchingClass));
MyDataSetMatchingClass myObj = (MyDataSetMatchingClass)serial.Deserialize(fs);
すべて正常に動作しますが、一時ファイルを使用したくないので、次のことを試しました。
MyStronglyTypedDataSet ds = new MyStronglyTypedDataSet();
//... fill the dataset...
MemoryStream dump = new MemoryStream();
ds.WriteXml(dump);
XmlSerializer serial = new XmlSerializer(typeof(MyDataSetMatchingClass));
MyDataSetMatchingClass myObj = (MyDataSetMatchingClass)serial.Deserialize(dump);
しかし、デシリアライザーは、ルート XML ノードが見つからないと文句を言います。XmlWriterにルートノードを追加するように指示する方法、または欠落しているルートノードまたはその他の解決策を無視するようにデシリアライザーに指示する方法を知っている人はいますか?