用C#对XML的操作

        最近在办公室没什么事做,老坐着也不行,所以就学了一下xml,当然学的时间有限,所以学得很肤浅.我个人认为,像这些东西.会用就可以啦,至于原理之类用着用着就会有感觉了.

        我觉得xml 就和VC++里面的ini(初始化文件)差不多,把一些必要的数据,或者是开机必须加载的一些数据放到这些文本文件中去,因为它们都有一种很规范的格式,所以读取里面的数据或者往里面插入数据的时候非常方便.

                                                                    源代码地址下载

     
 public XmlDocument XmlDoc;//Xml 实例
        public XmlNode Xmlnode;//
        public XmlElement Xmlelem;

   XmlDocument  是Xml实例 
   XmlNode     是Xml结点   XmlElement    结点元素 

    ////////首先生成一个.Xml 文件,并往里面插入数据,其实很简单,都有一种固定的模式,当然也有好几种方法,这里我只列出其中的一种方法,仅供大家参考

    //得到当前工程所在的目录

string stringCurrDir = System.IO.Directory.GetCurrentDirectory();//得到当前可执行文件所在的目录 
            MessageBox.Show(stringCurrDir);
            stringCurrDir=stringCurrDir+@"\data.xml"; //生成data.xml 文件

   //对了顺便说一下,为什么有的字符串前面要用@
  @"\data.xml",大家可以看到这里面有转义字符'\',不要@的话,就会报错.我想真正有一定编程经验的人,一定会非常清楚这一点,我没什么经验,只是偶然碰到而已,在这里与大家一起分享一下.会出现如下的错误.

XmlDoc = new XmlDocument();
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            XmlDeclaration xmldecl;
            xmldecl = XmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
            XmlDoc.AppendChild(xmldecl);
            //加入一个根元素
            Xmlelem = XmlDoc.CreateElement("", "Employees", "");
            XmlDoc.AppendChild(Xmlelem);
            //加入另外一个元素
            for (int i = 1; i < 3; i++)
            {
                XmlNode root = XmlDoc.SelectSingleNode("Employees");//查找<Employees>
                XmlElement xe1 = XmlDoc.CreateElement("Node");//创建一个<Node>结点
                xe1.SetAttribute("genre", "李赞红");
                xe1.SetAttribute("ISBN", "2-3631-4");
                XmlElement xesub1 = XmlDoc.CreateElement("title");
                xesub1.InnerText = "VC++从入门到精通";//设置文本结点 
                xe1.AppendChild(xesub1);
                XmlElement xesub2 = XmlDoc.CreateElement("author");
                xesub2.InnerText = "候捷";//设置文本结点 
                xe1.AppendChild(xesub2);
                XmlElement xesub3 = XmlDoc.CreateElement("price");
                xesub3.InnerText = "53.8";//设置文本结点 
                xe1.AppendChild(xesub3);
                root.AppendChild(xe1);
            }
            //XmlDoc.Save(System.IO.Directory.GetCurrentDirectory());
            XmlDoc.Save(stringCurrDir);

   ///添加一个结点

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


//读取Xml里面的数据
 

if (mark != 0)//mark 做标志用,重复点击按钮时,如果listBox 已经有显示,就应该将里面的数据清除
            {
                listBox1.Items.Clear();
            }
            XmlDocument XmlDoc1 = new XmlDocument();
            string stringCurrDir = System.IO.Directory.GetCurrentDirectory();
            stringCurrDir = stringCurrDir + @"\data.xml";
            XmlDoc1.Load(stringCurrDir);
            //获取Employees节点的所有子节点
            XmlNodeList nodeList = XmlDoc1.SelectSingleNode("Employees").ChildNodes;
            foreach (XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转化为XmlElement 类型
                string tt=xe.GetAttribute("genre");
                listBox1.Items.Add(tt);
                //继续获取xe子节点的所有子节点
                XmlNodeList nls = xe.ChildNodes;
                foreach (XmlNode xn1 in nls)
                {
                    XmlElement xe2 = (XmlElement)xn1;
                    listBox1.Items.Add("  " + xe2.Name+"  "+xe2.InnerText);
                }
            }
            mark = 1;
        }


 生成的Xml

 

当然这是我从网上找的资源去学的,具体链接地址如下,大家也应该去学一下

http://www.cnblogs.com/zhaoxinxin/articles/1446174.html

本人也是刚开始写博客,写的不好请大家拍砖,另外有问题,也欢迎大家一起探讨,欢迎评论.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值