C#实体类与XML互转以及List和DataTable转XML的使用
作者:野牛程序员:2024-01-06 22:18:41C#阅读 2691
C#中,实体类与XML之间的转换可以使用XmlSerializer
类来实现。以下是一个简单的示例,演示了如何将实体类对象序列化为XML字符串,以及如何将XML字符串反序列化为实体类对象:
using System; using System.IO; using System.Xml.Serialization; public class Program { public static void Main() { // 将实体类对象序列化为XML字符串 Person person = new Person { Name = "John Doe", Age = 30 }; string xmlString = SerializeToXml(person); Console.WriteLine("Serialized XML:"); Console.WriteLine(xmlString); // 将XML字符串反序列化为实体类对象 Person deserializedPerson = DeserializeFromXml<Person>(xmlString); Console.WriteLine("\\nDeserialized Object:"); Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}"); } // 将实体类对象序列化为XML字符串 private static string SerializeToXml<T>(T obj) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); return writer.ToString(); } } // 将XML字符串反序列化为实体类对象 private static T DeserializeFromXml<T>(string xmlString) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StringReader reader = new StringReader(xmlString)) { return (T)serializer.Deserialize(reader); } } } // 示例实体类 public class Person { public string Name { get; set; } public int Age { get; set; } }
关于List和DataTable转换为XML,可以使用DataSet
类。以下是一个简单的示例:
using System; using System.Data; public class Program { public static void Main() { // 示例 List 转换为 XML List<Person> personList = new List<Person> { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 28 } }; string listXml = ConvertListToXml(personList); Console.WriteLine("List to XML:"); Console.WriteLine(listXml); // 示例 DataTable 转换为 XML DataTable dataTable = ConvertListToDataTable(personList); string dataTableXml = ConvertDataTableToXml(dataTable); Console.WriteLine("\\nDataTable to XML:"); Console.WriteLine(dataTableXml); } private static string ConvertListToXml<T>(List<T> list) { DataSet dataSet = new DataSet(); dataSet.Tables.Add(ConvertListToDataTable(list)); return dataSet.GetXml(); } private static DataTable ConvertListToDataTable<T>(List<T> list) { DataTable dataTable = new DataTable(typeof(T).Name); foreach (var prop in typeof(T).GetProperties()) { dataTable.Columns.Add(prop.Name, prop.PropertyType); } foreach (var item in list) { DataRow row = dataTable.NewRow(); foreach (var prop in typeof(T).GetProperties()) { row[prop.Name] = prop.GetValue(item); } dataTable.Rows.Add(row); } return dataTable; } private static string ConvertDataTableToXml(DataTable dataTable) { DataSet dataSet = new DataSet(); dataSet.Tables.Add(dataTable); return dataSet.GetXml(); } } // 示例实体类 public class Person { public string Name { get; set; } public int Age { get; set; } }
这个示例演示了如何将List转换为XML字符串以及如何将DataTable转换为XML字符串。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
