using System;
using System.IO;
using System.Xml.Serialization;
public class Test
{
public static void Main()
{
XmlSerializer serializer = new XmlSerializer(typeof(Message));
//serializer.UnknownNode += serializer_UnknownNode;
try
{
var s = @"<DocumentElement>
<person>
<Age>13</Age>
<Name>My Name</Name>
</person>
</DocumentElement>";
var input = GenerateStreamFromString(s);
Message xmlMessage = (Message)serializer.Deserialize(input);
Console.WriteLine(xmlMessage.person.Age);
}
catch (Exception ex)
{
}
}
public static Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
}
[XmlRoot(ElementName = "DocumentElement", Namespace = "")]
public class Message
{
public Person person;
public class Person
{
public int Age { get; set; } // readonly
public String Name { get; set; }
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5YbWwuU2VyaWFsaXphdGlvbjsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlYbWxTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgWG1sU2VyaWFsaXplcih0eXBlb2YoTWVzc2FnZSkpOwoJCS8vc2VyaWFsaXplci5Vbmtub3duTm9kZSArPSBzZXJpYWxpemVyX1Vua25vd25Ob2RlOwoJCXRyeQoJCXsKCQkJdmFyIHMgPSBAIjxEb2N1bWVudEVsZW1lbnQ+CgkgPHBlcnNvbj4KCSAgPEFnZT4xMzwvQWdlPgoJICA8TmFtZT5NeSBOYW1lPC9OYW1lPgoJIDwvcGVyc29uPgoJPC9Eb2N1bWVudEVsZW1lbnQ+IjsKCQkJdmFyIGlucHV0ID0gR2VuZXJhdGVTdHJlYW1Gcm9tU3RyaW5nKHMpOwoJCQlNZXNzYWdlIHhtbE1lc3NhZ2UgPSAoTWVzc2FnZSlzZXJpYWxpemVyLkRlc2VyaWFsaXplKGlucHV0KTsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoeG1sTWVzc2FnZS5wZXJzb24uQWdlKTsKCQl9CgkJY2F0Y2ggKEV4Y2VwdGlvbiBleCkKCQl7CgkJCQoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyBTdHJlYW0gR2VuZXJhdGVTdHJlYW1Gcm9tU3RyaW5nKHN0cmluZyBzKQoJewoJCU1lbW9yeVN0cmVhbSBzdHJlYW0gPSBuZXcgTWVtb3J5U3RyZWFtKCk7CgkJU3RyZWFtV3JpdGVyIHdyaXRlciA9IG5ldyBTdHJlYW1Xcml0ZXIoc3RyZWFtKTsKCQl3cml0ZXIuV3JpdGUocyk7CgkJd3JpdGVyLkZsdXNoKCk7CgkJc3RyZWFtLlBvc2l0aW9uID0gMDsKCQlyZXR1cm4gc3RyZWFtOwoJfQp9CgpbWG1sUm9vdChFbGVtZW50TmFtZSA9ICJEb2N1bWVudEVsZW1lbnQiLCBOYW1lc3BhY2UgPSAiIildCnB1YmxpYyBjbGFzcyBNZXNzYWdlCnsKCXB1YmxpYyBQZXJzb24gcGVyc29uOwoJcHVibGljIGNsYXNzIFBlcnNvbgoJewoJCXB1YmxpYyBpbnQgQWdlIHsgZ2V0OyBzZXQ7IH0gLy8gcmVhZG9ubHkKCQlwdWJsaWMgU3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQoJfQp9