zoukankan      html  css  js  c++  java
  • .net XML操作

    一、常规介绍

            //初始化一个xml对象
            XmlDocument xml = new XmlDocument();
            //加载xml文件
            xml.Load("文件路径");
            //读取指定的节点
            XmlNode xmlNode = xml.SelectSingleNode("/节点名");
            //判断节点下是否有子节点
            xmlNode.HasChildNodes;
            //读取节点下的所有子节点
            XmlNodeList xmlNodeList = xmlNode.ChildNodes;
            //读取同名同级多个节点列表
            XmlNodeList xmlNodeList = xml.SelectNodes("/root/节点名");
            //读取节点的属性
            string attribute = xmlNode.Attributes["属性名"].Value;
            //读取节点的文本
            string value = xmlNode.InnerText;
    
            //创建一个新的节点
            XmlNode xmlNode = xml.CreateElement("节点名");
    
            //保存xml文件
            xml.Save("文件路径");

    二、添加一个节点

                XmlDocument xmlDoc=new XmlDocument(); 
                xmlDoc.Load(Server.MapPath("data.xml")); 
                XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees> 
                XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点 
                xe1.SetAttribute("genre","张三");//设置该节点genre属性 
                xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性
                XmlElement xesub1=xmlDoc.CreateElement("title"); 
                xesub1.InnerText="C#入门帮助";//设置文本节点 
                xe1.AppendChild(xesub1);//添加到<Node>节点中 
                XmlElement xesub2=xmlDoc.CreateElement("author"); 
                xesub2.InnerText="高手"; 
                xe1.AppendChild(xesub2); 
                XmlElement xesub3=xmlDoc.CreateElement("price"); 
                xesub3.InnerText="158.3"; 
                xe1.AppendChild(xesub3);
                root.AppendChild(xe1);//添加到<Employees>节点中 
                xmlDoc.Save ( Server.MapPath("data.xml") );

     三、编辑节点

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("data.xml"));
                XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获Employees  节  点  的       所有子节点
                foreach (XmlNode xn in nodeList)//遍历所有子节点 
                {
                    XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                    if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三” 
                    {
                        xe.SetAttribute("genre", "update张三");//则修改该属性为“update张三”
                        XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                        foreach (XmlNode xn1 in nls)//遍历 
                        {
                            XmlElement xe2 = (XmlElement)xn1;//转换类型 
                            if (xe2.Name == "author")//如果找到 
                            {
                                xe2.InnerText = "亚胜";//则修改
                            }
                        }
                    }
                }
                xmlDoc.Save(Server.MapPath("data.xml"));//保存。

     四、删除节点中的某一个属性

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("data.xml"));
                XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;
                    xe.RemoveAttribute("genre");//删除genre属性
                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
                    foreach (XmlNode xn1 in nls)//遍历 
                    {
                        XmlElement xe2 = (XmlElement)xn1;//转换类型 
                        if (xe2.Name == "flag")//如果找到 
                        {
                            xe.RemoveChild(xe2);//则删除
                        }
                    }
                }
                xmlDoc.Save(Server.MapPath("data.xml"));

    六、删除节点

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("data.xml"));
                XmlNode root = xmlDoc.SelectSingleNode("Employees");
                XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;
                for (int i = 0; i < xnl.Count; i++)
                {
                    XmlElement xe = (XmlElement)xnl.Item(i);
                    if (xe.GetAttribute("genre") == "张三")
                    {
                        root.RemoveChild(xe);
                        if (i < xnl.Count) i = i - 1;
                    }
                }
                xmlDoc.Save(Server.MapPath("data.xml"));

    七、按照文本读取XML

                System.IO.StreamReader myFile =new 
                System.IO.StreamReader(Server.MapPath("data.xml"),System.Text.Encoding.Default);
                //注意System.Text.Encoding.Default
                string myString = myFile.ReadToEnd();//myString是读出的字符串
                myFile.Close();
  • 相关阅读:
    bash 中的 ; && 与|| 的作用
    远程root用户无法登陆
    MySQL5.6主从同步(热备份)
    进程之间的通信方式
    远程连接openGuass配置
    openGuass1.1.0部署
    Go同步原语
    spring boot集成activiti6
    解决默认的jackson序列化循环引用的问题
    spring boot集成websocket
  • 原文地址:https://www.cnblogs.com/hanmian4511/p/6289287.html
Copyright © 2011-2022 走看看