C#中的XML序列化

9

我想知道在哪里可以找到关于将XML序列化为对象的好教程?谢谢。

7个回答

7

这很简单,只有三个主要步骤。

  1. 你需要在你的类上使用[Serializable]属性进行标记。
  2. 编写序列化代码。
  3. 编写反序列化代码。

序列化:

var x = new XmlSerializer(typeof(YourClass));
var fs = new FileStream(@"C:\YourFile.xml"), FileMode.OpenOrCreate);
x.Serialize(fs, yourInstance);
fs.Close();

反序列化:

var x = new XmlSerializer(typeof(YourClass));
var fs = new FileStream(@"C:\YourFile.xml"), FileMode.Open);
var fromFile = x.Deserialize(fs) as YourClass;
fs.Close();

5
针对 XML 序列化,[Serializable] 属性并非必须的。而在进行二进制序列化时,需要使用 [Serializable] 属性。 - Xenan
@Xenan +1,因为你提到[Serializable]在XML序列化中是多余的。 - M C

6

Microsoft支持页面上有一个基本的教程,他们的代码示例只有几行:

using System;

public class clsPerson
{
  public  string FirstName;
  public  string MI;
  public  string LastName;
}

class class1
{ 
   static void Main(string[] args)
   {
      clsPerson p=new clsPerson();
      p.FirstName = "Jeff";
      p.MI = "A";
      p.LastName = "Price";
      System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
      x.Serialize(Console.Out, p);
      Console.WriteLine();
      Console.ReadLine();
   }
}

基本上,您不必做任何事情,只需调用内置函数即可为您完成所有繁重的工作。



1

这是一个不错的开始 microsoft

同时,建议您了解 Xml Schema,并使用 xsd.exe 自动生成类。尽早熟悉此工具可以帮助您在处理 XML 时节省大量时间和精力。另外,查看生成的 C# 文件可以为您提供一些关于如何使用属性来操作 XmlSerializer 序列化类的线索。


1

在网上可以轻松找到许多关于使用 .Net 进行序列化数据的教程。但是,让我提醒一些要点:

  1. 序列化的类型:

    a. XML 序列化:请参考 http://www.switchonthecode.com/tutorials/csharp-tutorial-xml-serialization

    b. 二进制序列化:请参考 http://www.switchonthecode.com/tutorials/csharp-tutorial-serialize-objects-to-a-file

  2. 此外,在处理(读写数据)文件时,请注意安全方面的问题。这里有一个很好的教程 http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx


0
我们使用序列化将数据以二进制格式和XML格式进行写入。 对于二进制格式,我们使用BibnaryFormatSerialization,而对于XML格式,我们使用SoapFormatSerialization

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接