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