我有一个Web表单,需要将用户输入的数据保存到文件和客户端PC上,这也可以从保存的文件中读取并在以后重新填充字段。没有文件会保存到服务器端,所以我希望在写入时需要流式传输。
我认为XML是一种简单的方法,但我在方法论上受到了阻碍。 XML文档? XML作家?我很难用正确的搜索条件来获得我想要的东西。
提前感谢任何指示。
答案 0 :(得分:1)
您将要使用XML序列化。看一下这个MSDN article。以下是序列化和反序列化的摘录:
如何序列化对象
要序列化和对象,我们需要的很少 内置类的实例。所以 让我们先创建一个实例 System.Xml中的XmlDocument类 命名空间。然后创建一个实例 来自的XmlSerializer类 System.Xml.Serialization命名空间 使用参数作为对象类型。现在 只需创建一个实例 System.IO中的MemoryStream类 将帮助我们的命名空间 保存序列化数据。所以你的全部 实例在那里,现在你需要 打电话给他们的方法并得到你的 xml格式的序列化对象。我的 用于序列化对象的函数 喜欢以下。
私有字符串SerializeAnObject(object obj)
{
System.Xml.XmlDocument doc = new XmlDocument(); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(obj.GetType()); System.IO.MemoryStream stream = new System.IO.MemoryStream(); try { serializer.Serialize(stream, obj); stream.Position = 0; doc.Load(stream); return doc.InnerXml; } catch { throw; } finally { stream.Close(); stream.Dispose(); }
}
如何取消对象化
要对你需要的对象进行DeSerialize StringReader的实例,XmlReader 和XmlSerializer类以便 读取xml数据(序列化数据), 将其读入XmlReader和DeSerialize 它分别。所以简而言之我的 函数DeSerialize对象 看起来像是。
私有对象DeSerializeAnObject(string xmlOfAnObject)
{
MyClass myObject = new MyClass(); System.IO.StringReader read = new StringReader(xmlOfAnObject); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(myObject.GetType()); System.Xml.XmlReader reader = new XmlTextReader(read); try { myObject = (MyClass)serializer.Deserialize(reader); return myObject; } catch { throw; } finally { reader.Close(); read.Close(); read.Dispose(); }
}
答案 1 :(得分:1)
在客户端存储数据的其他一些选项: 请参阅this article,其中包含指向
信息的链接一个很大的问题是,您的目标是支持多个客户端浏览器,还是只支持IE?这将是决定使用何种方法的重要因素。
答案 2 :(得分:0)
听起来你需要将数据存储在cookie中。您无法从浏览器写入客户端PC上的文件。浏览器在沙箱中运行,可以保护客户端PC免受恶意网站的攻击。
请查看此页面,了解如何在客户端计算机上保存和检索Cookie数据:
http://www.aspnettutorials.com/tutorials/network/cookies-csharp.aspx