C#实体类与XML互转以及List和DataTable转XML的使用
作者:野牛程序员:2024-01-06 22:18:41C#阅读 2740
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

