本文主要讲将XML数据读取到数据库中,和从读取数据库中数据写入XML,数据库使用MySql
首先脑补下XML的知识:
XML作用:存储数据
优点:每种语言都内置了XML文件分析引擎,不用单独进行文件分析引擎的编写。
XML语法规范:
1)必须区分大小写
2)文档中只能有一个根节点
3)属性值必须用双引号
4)有开始标签一定要有结束标签
5)文档声明:<?xml version="1.0" encoding="utf-8"?>
读取数据库中的数据写入到XML:
主要用到的方法时setAttributeValue和setElementValue
1 static void Main(string[] args) 2 { 3 DataTable table = GetDataTable(); 4 ListstuList = TableToList(table); 5 XDocument xdoc = new XDocument(); 6 XElement root = new XElement("Person"); 7 xdoc.Add(root);//添加根节点 8 foreach (Student stu in stuList) 9 {10 XElement stuEle = new XElement("Student");11 stuEle.SetAttributeValue("stuId",stu.Student_Id.ToString());//设置属性12 stuEle.SetElementValue("name",stu.Name);//设置子节点和值13 stuEle.SetElementValue("class", stu.Class);14 stuEle.SetElementValue("gender", stu.Gender);15 root.Add(stuEle);16 }17 xdoc.Save("1.xml");18 Console.WriteLine("数据库写入完毕");19 Console.ReadKey();20 }21 /// 22 /// 读取数据库表数据23 /// 24 ///25 public static DataTable GetDataTable()26 {27 string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;28 DataSet ds= MySqlHelper.ExecuteDataset(connstr,"select * from student");29 return ds.Tables[0];30 }31 /// 32 /// 将行转换为list33 /// 34 /// 35 ///36 public static List TableToList(DataTable table)37 {38 List list = new List ();39 for (int i = 0; i < table.Rows.Count; i++)40 {41 Student stu = new Student();42 DataRow row=table.Rows[i];43 stu.Class = row["Class"].ToString();44 stu.Gender = row["Gender"].ToString();45 stu.Name = row["Name"].ToString();46 stu.Student_Id = Convert.ToInt32(row["Student_Id"]);47 list.Add(stu);48 }49 return list;50 }
读取xml数据插入到数据库
主要用到的方法item.Attribute("Xname").value--获取属性的值 item.Element("Xname").value--获取子节点的值
1 string connstr = "server=localhost;database=test;user id=root;password=123"; 2 XDocument xdoc = XDocument.Load(@"F:\tmp\1.xml"); 3 XElement root = xdoc.Root; 4 foreach (XElement item in root.Elements()) 5 { 6 //Console.WriteLine(item.Element("name").Value); 7 //Console.WriteLine(item.Element("class").Value); 8 //Console.WriteLine(item.Element("gender").Value); 9 string sql = "insert into student(Student_Id,Name,Class,Gender)values(@Student_Id,@Name,@Class,@Gender)";10 MySqlParameter[] ps = { 11 new MySqlParameter("@Student_Id",item.Attribute("stuId").Value),//读取属性值12 new MySqlParameter("@Name",item.Element("name").Value),//读取子节点值13 new MySqlParameter("@Class",item.Element("class").Value),14 new MySqlParameter("@Gender",item.Element("gender").Value)15 };16 MySqlHelper.ExecuteNonQuery(connstr, sql, ps);//插入数据库17 }18 Console.WriteLine("ok");19 Console.ReadKey();