1

.NET オブジェクトをシリアル化/逆シリアル化する作業を行っています。XML ファイルの要件として、オブジェクトは という名前のマスター ノード内にある必要がありますmycompany。ファイルの例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<mycompany>
  <station>
    <serial>VAA008090067</serial>
  </station>
</mycompany>

これを逆シリアル化する際に問題が発生しています。mycompanyシリアライザーに「デシリアライズする前にノードを掘り下げてください」と伝える方法がわかりません。

これが私の現在のデシリアライゼーションコードです(ルートノードを考慮していません):

Stream binaryStream = File.Open(Filename, FileMode.Open);
XmlSerializer xformatter = xformatter = new XmlSerializer(typeof(T));
obj = (T)xformatter->Deserialize(stream);

次のコードを実行しようとしました: を作成XmlTextStreamし、ファイル ヘッダー ノードとノードを読み取りmycompany、ストリームをシリアライザーに渡します。

Stream binaryStream = File.Open(Filename, FileMode.Open);
xmlReader = gcnew XmlTextReader(binaryStream);
xmlReader.Read(); // add error checking
xmlReader.Read(); // add error checking
xformatter = gcnew XmlSerializer(T.typeid);
obj = (T)xformatter.Deserialize(xmlReader);

上記は機能しませんXmlElement error: Root element is missing

簡単な解決策があることは知っていますが、見つけることができません。

4

1 に答える 1

3

に変更します

xformatter.Deserialize(xmlReader.ReadSubTree());
于 2010-08-11T15:21:08.037 に答える