XML文件的生成与读取

从数据库生成:

 

 public static void ToXML(string tablename)

        {

            //获取数据

            string sql = "select * from " + tablename;

            DataTable dt = SqlHelper.GetList(sql);

            //创建xml对象

            XDocument document = new XDocument();

            //创建根节点

            XElement root = new XElement(tablename + "s");

            document.Add(root);

            //遍历表格,添加结点

            foreach (DataRow item in dt.Rows)

            {

                //创建元素节点

                XElement element = new XElement(tablename);

                //设置编号属性(key   value,效果:<user c_id="1"> </user>)

                element.SetAttributeValue(dt.Columns[0].ColumnName, item[0].ToString());//假设0列为主键列

                //将所有列(除编号列外)分别生成子元素(key   value,效果: <c_name>洛杉矶</c_name>)

                for (int i = 1; i < dt.Columns.Count; i++)

                {



                    element.SetElementValue(dt.Columns[i].ColumnName, item[i].ToString());

                }

                root.Add(element);

            }

            //保存生成的xml

            document.Save(tablename+".xml");

        }

 从文件中读取:

 

 public void getXml()

        {

            XDocument document = new XDocument();

            //加载文件

            document = XDocument.Load("Test.xml");

            //读取根节点

            XElement root = document.Root;

           // Console.WriteLine("节点名:"+root.Name+"节点值:"+root.FirstAttribute.Value);

            //加入节点前使用linq to xml的语法判断id是否存在



            int n = root.Elements("student").Where(u => u.Attribute("id").Value == "15" || u.Element("name").Value == "王五").Count();

            if (n > 0)

            {

                Console.WriteLine("id已经存在");

            }

            else 

            {

                XElement element = new XElement("student");

                //设置属性

                element.SetAttributeValue("id", "15");

                //设置节点下的子节点

                element.SetElementValue("name", "王五");

                element.SetElementValue("age", "68");

                //加入到根元素下

                root.Add(element);

                //保存操作

                document.Save("Test.xml");

            }

           

            //循环读取节点内容

            foreach (XElement item in root.Elements())

            {

                Console.WriteLine("节点名:" + item.Name + " 节点属性值:" + item.Attribute("id").Value + " 节点值:" + item.Element("name").Value);

            }

        }

 

XElement n = root.Elements("rootFile").Where(u => u.Attribute("name").Value == "rf").ElementAt(0);

MessageBox.Show(n.Attribute("value").Value);

展示一下子节点的属性值

你可能感兴趣的:(xml)