读书人

在线急等!该如何处理

发布时间: 2012-06-14 16:00:31 作者: rapoo

在线急等!!!!!!!
以下是把一个对象序列化成一个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);    }} 

读书人网 >C#

热点推荐