all groups > dotnet xml > august 2004 >
You're in the

dotnet xml

group:

How do I serialize an object to a string instead of a stream?


How do I serialize an object to a string instead of a stream? kjems NO[at]SPAM msn.com
8/6/2004 4:21:45 AM
dotnet xml:
This is the example from MSDN where an object is serialized to a
filestream:

MySerializableClass myObject = new MySerializableClass();
// Insert code to set properties and fields of the object.
XmlSerializer mySerializer = new
XmlSerializer(typeof(MySerializableClass));
// To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter("myFileName.xml");
mySerializer.Serialize(myWriter, myObject);

How do I make a similar code that would give me a string or an XML
Re: How do I serialize an object to a string instead of a stream? Martin Honnen
8/6/2004 4:52:56 PM


[quoted text, click to view]

You should be able to serialize to a StringWriter instead of a StreamWriter:

Person p1 = new Person();
p1.Name = "Kibo";

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));

StringWriter stringWriter = new StringWriter();

xmlSerializer.Serialize(stringWriter, p1);

string serializedXML = stringWriter.ToString();

Console.WriteLine(serializedXML);


[quoted text, click to view]

That should work too by serializing to a memory stream and loading the
XmlDocument from that:

Person p1 = new Person();
p1.Name = "Kibo";

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));

MemoryStream memStream = new MemoryStream();

StreamWriter streamWriter = new StreamWriter(memStream);


xmlSerializer.Serialize(streamWriter, p1);

memStream.Position = 0;

StreamReader streamReader = new StreamReader(memStream);

XmlDocument serializedXML = new XmlDocument();

serializedXML.Load(streamReader);

Console.WriteLine(serializedXML.OuterXml);
--

Martin Honnen
http://JavaScript.FAQTs.com/
Re: How do I serialize an object to a string instead of a stream? Kristian Kjems
8/7/2004 4:34:41 AM
Cheers mate, was exactly the kind of information I was looking for.
Had been searching for the C++ stringstream equivalent in C#, but did not
know it was called StringWriter.
Re: How do I serialize an object to a string instead of a stream? Kristian Kjems
8/10/2004 8:12:52 AM
With the information given to me in this thread I made an abstract class
that if inherited from will be able to return the current object as an XML
serialized string:
The "get" is working, but the last line is "set" is not.
I get these two not surprisingly error messages from VS.Net:
"Cannot assign to '<this>' because it is read-only"
"Cannot implicitly convert type 'object' to 'AbstractXMLObject'"

Is there any nifty way, the fundamental idea of "set" can be possible
anyway or does it strive against fundamental principles?

abstract public class AbstractXMLObject
{
public string XML
{
get
{
XmlSerializer xmlSerializer = new XmlSerializer(this.GetType());
StringWriter stringWriter = new StringWriter();
xmlSerializer.Serialize(stringWriter,this);
return stringWriter.ToString();
}
set
{
XmlSerializer xmlSerializer = new XmlSerializer(this.GetType());
StringReader stringReader = new StringReader(value);
this = xmlSerializer.Deserialize(stringReader);
}
}
}
AddThis Social Bookmark Button