我在從MemoryStream反序列化XML文件時遇到問題。我有一個生成的MyXmlFile類和一個MemoryStream包含一個XML文件,我想反序列化成MyXmlFile類型的對象。使用XmlSerializer.Deserialize從MemoryStream中反序列化XML文件不起作用
public static class XmlSerializeObject
{
public static T FromStream<T>(Stream s)
{
var serializer = new XmlSerializer(typeof(T));
return (T) serializer.Deserialize(s);
}
}
我有一個MemoryStream MS包含一個XML文件。如果我試圖在流反序列化爲類型的對象MyXmlFile我得到一個異常「有XML文檔中的錯誤(0,0)」
MyXmlFile test = XmlSerializeObject.FromStream<MyXmlFile>(ms);
但是我覈實,我的MemoryStream是正確的。如果我首先將我的流寫入光盤上的文件並再次讀取該文件,那麼它可以正常工作。
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"));
我無法自己找到解決方案,所以我決定發佈我的問題。也許以前有人有同樣的問題,並能夠幫助我。
在此先感謝。如果有什麼不清楚的地方,請詢問。
能否請您添加類'MyXmlFile'的定義是什麼? –
你能發佈你如何將XML文件加載到內存流中,並確認你正在將流重置爲位置0,類似於'Seek(0,SeekOrigin.Begin)' – Kane
這聽起來像你可能已經使用了內存流在將它傳遞給序列化程序之前,情況可能如此嗎?如果是這樣,請事先重置內存流位置。 - 編輯:@Kane打敗我在stream.Position的東西^^ – Smudge202