当前位置:首页C# > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击