How to serialize a .NET object and assign to a string variable? [duplicate]

半腔热情 提交于 2019-12-13 17:24:49

问题


How do I serialize a .NET object into XML and assign the XML string to variable?

Example:

private void SerializeObject(string filename)
{
    Console.WriteLine("Writing With Stream");

    XmlSerializer serializer =
    new XmlSerializer(typeof(OrderedItem));
    OrderedItem i = new OrderedItem();
    i.ItemName = "Widget";
    i.Description = "Regular Widget";
    i.Quantity = 10;
    i.UnitPrice = (decimal) 2.30;
    i.Calculate();

    // Create a FileStream to write with.
    Stream writer = new FileStream(filename, FileMode.Create);

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

    //Assign the serialized XML to a variable here.
    //For example, var serialized=serializer.serialized(i);

    writer.Close();
}

回答1:


XmlSerializer ser = new XmlSerializer(typeof(Test));
Test t = new Test() { Id = 1 };

MemoryStream ms = new MemoryStream();
ser.Serialize(ms, t);
ms.Position = 0;

StreamReader r = new StreamReader(ms);
string res = r.ReadToEnd();

EDIT: @Quasdunk not only beat me, but with a better code sample




回答2:


The easiest thing to do here is to use a StringWriter:

var sw = new StringWriter();
serializer.Serialize(sw, obj);
string xml = sw.ToString();



回答3:


using (StringWriter sw = new StringWriter() && XmlSerializer xml = new XmlSerializer(typeof(OrderedItem)))
{
    xml.Serializer(sw, i);
    string result = sw.ToString();
}

This assumes that i is an OrderedItem (as per your post).




回答4:


This is how I do it:

using(var mem = new MemoryStream()){
    serializer.Serialize(mem,"");
    String xml = Encoding.UTF8.GetString(mem.ToArray());
}


来源:https://stackoverflow.com/questions/6937295/how-to-serialize-a-net-object-and-assign-to-a-string-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!