首页 > 代码库 > .net XML操作

.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 =http://www.mamicode.com/ 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();

 

.net XML操作