首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在线急等!该如何处理

2012-06-14 
在线急等!!!!!!!以下是把一个对象序列化成一个XML格式我的问题是怎么同时把2各对象序列化成XML,并且输出到

在线急等!!!!!!!
以下是把一个对象序列化成一个XML格式 我的问题是怎么同时把2各对象序列化成XML,并且输出到一个文件中,
下次反序列化时,可以反序列化成2各自的对象!!!!!!!!! 代码应该怎么改啊???????  

 class Program
  {
  static void Main(string[] args)
  {
  XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));

  // Create an instance of the class to be serialized.
  OrderedItem i = new OrderedItem();

  // Set the public property values.
  i.ItemName = "Widget";
  i.Description = "Regular Widget";
  i.Quantity = 10;
  i.UnitPrice = (decimal)2.30;

  // Writing the document requires a TextWriter.
  TextWriter writer = new StreamWriter("d:/123.txt");

  // Serialize the object, and close the TextWriter.
  serializer.Serialize(writer, i);
  writer.Close();

  }
  }
  public class OrderedItem
  {
  public string ItemName;
  public string Description;
  public decimal UnitPrice;
  public int Quantity;
  }

[解决办法]

C# code
XmlSerializer serializer = new XmlSerializer(typeof(OrderedItem));using (FileStream stream = File.Open("d:/123.txt", FileMode.Create)){    using (MemoryStream ms = new MemoryStream())    {        OrderedItem i = new OrderedItem();        i.ItemName = "Widget1";        i.Description = "Regular Widget1";        i.Quantity = 10;        i.UnitPrice = (decimal)2.30;        serializer.Serialize(ms, i);        int len = (int)ms.Length;        stream.Write(BitConverter.GetBytes(len), 0, sizeof(int));        stream.Write(ms.ToArray(), 0, (int)ms.Length);    }    using (MemoryStream ms = new MemoryStream())    {        OrderedItem i = new OrderedItem();        i.ItemName = "Widget2";        i.Description = "Regular Widget2";        i.Quantity = 10;        i.UnitPrice = (decimal)2.30;        serializer.Serialize(ms, i);        int len = (int)ms.Length;        stream.Write(BitConverter.GetBytes(len), 0, sizeof(int));        stream.Write(ms.ToArray(), 0, (int)ms.Length);    }}var bytes = File.ReadAllBytes("d:/123.txt");int index = 0;{    int len = BitConverter.ToInt32(bytes, index);    index += sizeof(int);    using (MemoryStream ms = new MemoryStream(bytes, index, len))    {        index += len;        OrderedItem item = (OrderedItem)serializer.Deserialize(ms);    }}{    int len = BitConverter.ToInt32(bytes, index);    index += sizeof(int);    using (MemoryStream ms = new MemoryStream(bytes, index, len))    {        index += len;        OrderedItem item = (OrderedItem)serializer.Deserialize(ms);    }} 

热点排行