在asp.net中编写和下载xml文件的最佳方法是什么?

时间:2010-08-19 15:27:29

标签: asp.net xml

我有一个Web表单,需要将用户输入的数据保存到文件和客户端PC上,这也可以从保存的文件中读取并在以后重新填充字段。没有文件会保存到服务器端,所以我希望在写入时需要流式传输。

我认为XML是一种简单的方法,但我在方法论上受到了阻碍。 XML文档? XML作家?我很难用正确的搜索条件来获得我想要的东西。

提前感谢任何指示。

3 个答案:

答案 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,其中包含指向

信息的链接
  • HTML5本地存储(需要新的浏览器)
  • Google齿轮(必须安装)
  • Yahoo的SWFStore(需要Flash,据说安装在> 98%的浏览器上)
  • Cookie(少量数据)

一个很大的问题是,您的目标是支持多个客户端浏览器,还是只支持IE?这将是决定使用何种方法的重要因素。

答案 2 :(得分:0)

听起来你需要将数据存储在cookie中。您无法从浏览器写入客户端PC上的文件。浏览器在沙箱中运行,可以保护客户端PC免受恶意网站的攻击。

请查看此页面,了解如何在客户端计算机上保存和检索Cookie数据:

http://www.aspnettutorials.com/tutorials/network/cookies-csharp.aspx