XMLファイルをメモリストリームから逆シリアル化するのに問題があります。私は生成されたMyXmlFileクラスと、MyXmlFile型のオブジェクトに逆直列化したいXMLファイルを含むMemoryStreamを持っています。MemoryStreamのXmlSerializer.Deserializeを使用してXMLファイルをデシリアライズできない
public static class XmlSerializeObject
{
public static T FromStream<T>(Stream s)
{
var serializer = new XmlSerializer(typeof(T));
return (T) serializer.Deserialize(s);
}
}
xmlファイルを含むMemoryStream msがあります。私は例外を取得MyXmlFileタイプのオブジェクトにそのストリームをデシリアライズしようとした場合、私は私のMemoryStreamが正しいことを確認ししかし
MyXmlFile test = XmlSerializeObject.FromStream<MyXmlFile>(ms);
「XMLドキュメント内のエラー(0,0)があります」。私のストリームを最初にディスク上のファイルに書き込んで、そのファイルを再度読み込むよりもうまくいきます。
FileStream outStream = File.OpenWrite("D:\\p.xml");
outStream.Write(((MemoryStream)ms).ToArray(), 0, ((MemoryStream)ms).ToArray().Length);
outStream.Flush();
outStream.Close();
MyXmlFile test= XmlSerializeObject.FromStream<MyXmlFile>(File.OpenRead("D:\\p.xml"));
自分で解決策を見つけることができなかったため、質問を投稿することにしました。多分誰かが同じ問題を抱えていて、私を助けてくれるかもしれません。
ありがとうございます。不明な点がある場合はお尋ねください。
へのMemoryStreamの位置を設定する必要がありますMyXmlFile'? –
XMLファイルをメモリストリームにロードする方法を投稿して、 'Seek(0、SeekOrigin.Begin)'のようにストリームを0の位置に戻すことを確認できますか? – Kane
memorystreamそれをシリアライザに渡す前に、それは事実でしょうか?その場合は、あらかじめメモリストリームの位置をリセットしてください。 - 編集:@ケーンはストリーム上でそれを私に打つ。位置事^^ – Smudge202