通过Stream将XElement保存到ZipFile

| 我正在使用一个zip文件作为xml文件的存储库,并且正在尝试保存/更新文件。 我有,
protected override void SaveFile()
{
    MemoryStream ms = new MemoryStream();
    var sr = new StreamWriter(ms);
    table.Save(sr); // XElement table is filled elsewhere
    ZipEntry entry = Repository.zip.Entries.FirstOrDefault(z => z.FileName == path);
    if (null == entry)
        Repository.zip.AddEntry(path, ms);
    else
        Repository.zip.UpdateEntry(path, ms);
}
但结果是我得到了一个空的xml文件。 存储库通过ѭ1打开,它的Dispose为每个需要保存的xml文件调用
SaveFile()
。然后调用
zip.Save()
,然后calls4ѭ。 我要去哪里错了? PS我使用的是.NET 3.5,因此无法使用XElement.Save(stream)     
已邀请:
        保存到MemoryStream中之后,流位置在序列化XElement的结尾之后。我的猜测是AddEntry和UpdateEntry不会尝试重置流位置,因此在调用这些API之前您需要自己重置:
ms.Seek(0, SeekOrigin.Begin);
    

要回复问题请先登录注册