• 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);

    展示一下子节点的属性值

  • 相关阅读:
    一、docker安装CentOS7
    c#使用资源文件完成国际化
    .netcore 读取ansi编码
    省市区数据库
    .netcore2.0发送邮件
    使用py,根据日志记录自动生成周报
    mysql监控每一条执行的sql语句
    根据json生成c#实体类
    使用.net core efcore根据数据库结构自动生成实体类
    winform,同个程序只允许启动一次
  • 原文地址:https://www.cnblogs.com/llcdbk/p/4342270.html
Copyright © 2020-2023  润新知