您的位置:首页 > 其它

DataTable与Xml的相互转化

2011-04-21 18:05 323 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace Test2
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.将DataTable写入Xml
            List<Person> list = new List<Person> { 
                    new Person(){Id=1,Name="小明"},
                    new Person(){Id=2,Name="小华"}
            };
            DataTable dt = new DataTable("MatrixInfo");
            DataColumn dc1 = new DataColumn("ID");
            DataColumn dc2 = new DataColumn("Name");
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            foreach(Person p in list){
                DataRow dr = dt.NewRow();
                dr["ID"] = p.Id;
                dr["Name"] = p.Name;
                dt.Rows.Add(dr);
            }
            System.IO.StringWriter writer = new System.IO.StringWriter();
            dt.WriteXml(writer);
            string xmlstr= writer.ToString();
            writer.Close();
            Console.WriteLine(xmlstr);
            //2.将Xml读入DataTable, 切记MatrixInfo,ID,Name. 即表名, 列名要一一对应
            DataTable dtStep2 = new DataTable("MatrixInfo");
            DataColumn dc1Step2 = new DataColumn("ID");
            DataColumn dc2Step2 = new DataColumn("Name");
            dtStep2.Columns.Add(dc1Step2);
            dtStep2.Columns.Add(dc2Step2);
            System.IO.StringReader reader = new System.IO.StringReader(xmlstr);
            dtStep2.ReadXml(reader);
            Console.WriteLine("测试转换结果:");
            foreach (DataRow drS2 in dtStep2.Rows) {
                Console.WriteLine(drS2[0]+"/t"+drS2[1]);
            }
            Console.ReadLine();
        }
    }
    public class Person {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}


起初担心, 无法转换<>等特殊字符, 后来发现,

dt->xml <会自动转成< , >会自动转成>

xml->dt <-> '<' , >-> '>'

赞一个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: