概述
如何将一个对象转换成xml。
封装一个静态函数
/// <summary> /// 一个泛型对象转换成xml /// </summary> /// <param name="obj">对象</param> /// <returns></returns> public static string ObjectToXml<T>(T obj) { if (obj == null) { return ""; } using (MemoryStream stream = new MemoryStream()) { XmlSerializer xml = new XmlSerializer(obj.GetType()); xml.Serialize(stream, obj); stream.Position = 0; StreamReader sr = new StreamReader(stream); string str = sr.ReadToEnd(); return str; } }
将一个用户对象转换成xml
User user = new User(); user.Name = "Test"; string xml = AdfXml.ObjectToXml(user); Console.WriteLine(xml);
结果
<?xml version="1.0"?> <User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ID>0</ID> <Name>Test</Name> <Sex>未知</Sex> <RoleID>0</RoleID> <DepartmentID>0</DepartmentID> <Online>false</Online> <Enable>false</Enable> <Logins>0</Logins> <LastLogin>0001-01-01T00:00:00</LastLogin> <RegisterTime>0001-01-01T00:00:00</RegisterTime> <Ex1>0</Ex1> <Ex2>0</Ex2> <Ex3>0</Ex3> <UpdateUserID>0</UpdateUserID> <UpdateTime>0001-01-01T00:00:00</UpdateTime> </User>
一个包含子类的xml序列化
List<CodeFunc> lstCodeFuncs = new List<CodeFunc> { new CodeFunc(){FuncName = "SetNewName",ReturnType = "string"}, new CodeFunc(){FuncName = "AddEntity",ReturnType = "string"}, new CodeFunc(){FuncName = "ModifyEntity",ReturnType = "string"}, }; CodeEntity codeEntity = new CodeEntity(); codeEntity.Name = "用户管理"; codeEntity.Code = "1122"; codeEntity.FuncList = lstCodeFuncs; string xml = AdfXml.ObjectToXml(codeEntity); Console.WriteLine(xml);
结果
<?xml version="1.0"?> <CodeEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Code>1122</Code> <Name>用户管理</Name> <FuncList> <CodeFunc> <FuncName>SetNewName</FuncName> <ReturnType>string</ReturnType> </CodeFunc> <CodeFunc> <FuncName>AddEntity</FuncName> <ReturnType>string</ReturnType> </CodeFunc> <CodeFunc> <FuncName>ModifyEntity</FuncName> <ReturnType>string</ReturnType> </CodeFunc> </FuncList> </CodeEntity>