Here is an example:
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace XMLTest1
{
public class Test
{
public string value1 { get; set; } = "value1";
public string value2 { get; set; } = "value2";
}
public class xml
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public string CreateTime { get; set; }
public string MsgType { get; set; }
public string Content { get; set; }
}
class Program
{
public static string SerializeToString<T>(T value)
{
var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var serializer = new XmlSerializer(value.GetType());
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, value, emptyNamepsaces);
return stream.ToString();
}
}
public static T StringToXMLObject<T>(string str)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
T res = (T)serializer.Deserialize(new StringReader(str));
return res;
}
static void Main(string[] args)
{
Test test = new Test();
string xmlStr = SerializeToString<Test>(test);
Console.WriteLine(xmlStr);
string xmlStr1 = @"<xml>\r\n <ToUserName><![CDATA[o1Duh0Z9-o0qz-5X4GbxfpLTpbwo]]></ToUserName>\r\n <FromUserName><![CDATA[gh_e81439dc11c1]]></FromUserName>\r\n <CreateTime>1508487821</CreateTime>\r\n <MsgType><![CDATA[text]]></MsgType>\r\n <Content><![CDATA[火线是cf,还是wf?]]></Content>\r\n</xml>";
xml xmlObj = StringToXMLObject<xml>(xmlStr1);
Test test2 = StringToXMLObject<Test>(xmlStr);
Console.ReadKey();
}
}
}