C#XML文件的数据读、写

        //=======================================================
        //XML文件的,数据读、写
        //=======================================================

        /// <summary>
        /// 读取XML
        /// </summary>
        public void ReadXML(string file)
        {   //using System.Xml;

            //载入XML文档
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(file);


            XmlNode root = xmlDoc.SelectSingleNode("Map");//查找<bookstore>
            XmlElement Node = (XmlElement)root;
            string str = Node.GetAttribute("CellHeight"); //CellWidth

            MessageBox.Show("宽度值:" + str + "", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

            //root.SelectSingleNode()
            XmlNode Node2 = root.SelectSingleNode("PhysicalLayer");        //查找子节点
            XmlElement Elem = (XmlElement)Node2;
            MessageBox.Show("获取数据:" + Elem.InnerText, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);

        }

        /// <summary>
        /// 写入XML
        /// </summary>
        public void writeXML(string file)
        {
            //载入XML文档
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(file);

            //修改XML
            XmlNode root = xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
            {
                XmlElement xe1 = xmlDoc.CreateElement("book");  //创建一个<book>节点
                xe1.SetAttribute("genre", "李赞红");            //设置该节点genre属性
                xe1.SetAttribute("ISBN", "2-3631-4");           //设置该节点ISBN属性
                {
                    XmlElement xesub1 = xmlDoc.CreateElement("title");
                    xesub1.InnerText = "CS从入门到精通";        //设置文本节点
                    xe1.AppendChild(xesub1);                    //添加到<book>节点中

                    XmlElement xesub2 = xmlDoc.CreateElement("author");
                    xesub2.InnerText = "候捷";
                    xe1.AppendChild(xesub2);

                    XmlElement xesub3 = xmlDoc.CreateElement("price");
                    xesub3.InnerText = "58.3";
                    xe1.AppendChild(xesub3);
                }
                root.AppendChild(xe1);                          //添加到<bookstore>节点中
            }

            //保存修改到XML
            xmlDoc.Save(file);
            MessageBox.Show("写入XML完成", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        

        /// <summary>
        /// 获取XML文件,节点属性值,用法:
        /// ReadXML_Attrribute("D:\\data.XML", "Map", "CellHeight");     根节点
        /// ReadXML_Attrribute("D:\\data.XML", "Map/BuildItem", "name"); 子节点
        /// </summary>
        public string ReadXML_NodeAttrribute(string file, string nodePath, string attr)
        {   //using System.Xml;

            string str = "";
            try
            {
                //载入XML文档
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(file);

                XmlNode Node = xmlDoc.SelectSingleNode(nodePath);   //查找节点
                XmlNode Node2 = xmlDoc.SelectNodes(nodePath)[2];
                Node = Node2;
                XmlElement Elemnet = (XmlElement)Node;              //转化为XML元素

                str = Elemnet.GetAttribute(attr);                   //获取节点属性值
            }
            catch (Exception e)
            {
                string tmp = "获取XML文件,节点属性值出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
                MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            return str;
        }

        /// <summary>
        /// 读取所有节点nodePath,的所有attr属性值
        /// </summary>
        public string[][] ReadXML_NodesAttrribute(string file, string nodePath, string[] attr)
        {   //using System.Xml;

            string[][] str = null;
            try
            {
                //载入XML文档
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(file);

                XmlNodeList Nodes = xmlDoc.SelectNodes(nodePath);       //获取所有nodePath的节点
                str = new string[Nodes.Count][];

                for (int i = 0; i < Nodes.Count; i++)
                {
                    XmlElement Elemnet = (XmlElement)Nodes[i];          //转化为XML元素
                    str[i] = new string[attr.Length];

                    for (int j = 0; j < attr.Length; j++)
                        str[i][j] = Elemnet.GetAttribute(attr[j]);      //获取节点属性值
                }
            }
            catch (Exception e)
            {
                string tmp = "获取XML文件,节点属性值出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
                MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            return str;
        }

        /// <summary>
        /// 读取所有节点nodePath,的所有attr属性值
        /// </summary>
        public string[][] ReadXML_NodesAttrribute2(string fileText, string nodePath, string[] attr)
        {   //using System.Xml;

            string[][] str = null;
            try
            {
                //载入XML文档
                XmlDocument xmlDoc = new XmlDocument();
                //xmlDoc.Load(file);
                xmlDoc.LoadXml(fileText);

                XmlNodeList Nodes = xmlDoc.SelectNodes(nodePath);       //获取所有nodePath的节点
                str = new string[Nodes.Count][];

                for (int i = 0; i < Nodes.Count; i++)
                {
                    XmlElement Elemnet = (XmlElement)Nodes[i];          //转化为XML元素
                    str[i] = new string[attr.Length];

                    for (int j = 0; j < attr.Length; j++)
                        str[i][j] = Elemnet.GetAttribute(attr[j]);      //获取节点属性值
                }
            }
            catch (Exception e)
            {
                string tmp = "获取XML文件,节点属性值出错! \n1、请确保XML文件\n" + "存在,且其格式无误\n2、请确保节点“" + nodePath + "”和节点属性“" + attr + "”在XML文件中确实存在";
                MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            return str;
        }
        
        /// <summary>
        ///获取XML文件,节点数据,用法
        ///ReadXML_NodeText("D:\\data.XML", "Map");                  根节点
        ///ReadXML_NodeText("D:\\data.XML", "Map/PhysicalLayer");    子节点
        /// </summary>
        public string ReadXML_NodeText(string file, string nodePath)
        {
            string str = "";
            try
            {
                //载入XML文档
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(file);

                XmlNode Node = xmlDoc.SelectSingleNode(nodePath);   //查找节点
                XmlElement Elemnet = (XmlElement)Node;              //转化为XML元素

                str = Elemnet.InnerText;                     //获取节点数据
            }
            catch (Exception e)
            {
                string tmp = "获取XML文件,节点数据出错! \n1、请确保文件\n“" + file + "”存在,且其格式无误\n2、请确保节点“" + nodePath + "”在XML文件中确实存在";
                MessageBox.Show(tmp, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            return str;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值