.net中xml文件的导入使用(包括创建xml和导入xml)

上次有说到.net 创建xml文件的方法(一种固定方式,一种动态方法),这次记录一下怎样导入xml文件

1、导入xml文件的方法

1)xml文件格式

2) 窗体页面的样式

3)源码实例

3.1)创建xml文件的源码

         /// <summary>
        /// 灵活方式模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnModel1_Click(object sender, EventArgs e)
        {
            XmlTest oms = new XmlTest();
            //获取保存xml名称
            oms.Name = this.txt_Model.Text;

            //判断厂商保存的xml值
            if (this.rad_3shape.Checked)
            {
                oms.Factory =this.rad_3shape.Text;
            }
            if (this.rad_ruike.Checked)
            {
                oms.Factory = this.rad_ruike.Text;
            }
            //判断压缩格式保存的xml值
            if (this.rad_3oxz.Checked)
            {
                oms.Compress = this.rad_3oxz.Text;
            }
            if (this.rad_zip.Checked)
            {
                oms.Compress = this.rad_zip.Text;
            }
            //判断保存的xml值
            if (this.rad_web.Checked)
            {
                oms.UpMethod = this.rad_web.Text;
            }
            if (this.rad_ftp.Checked)
            {
                oms.UpMethod = this.rad_ftp.Text;
            }

            //MessageBox.Show("厂商名称:"+oms.Factory +",压缩格式:"+oms.Compress+",上传方式:"+oms.UpMethod);

            //创建xml文档对象
            XmlDocument xmldoc = new XmlDocument();
            XmlText xmltext;

            //加入xml的声明段落
            XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0","utf-8",null);
            xmldoc.AppendChild(xmlnode);

            //添加一个根元素
            //创建元素节点Model
            XmlElement xmlele = xmldoc.CreateElement("","Model", "");
            //创建文本节点
            xmltext = xmldoc.CreateTextNode("");
            //创建元素节点的文本节点
            xmlele.AppendChild(xmltext);
            //绑定元素节点属于xml文档
            xmldoc.AppendChild(xmlele);

            //添加一个子元素
            XmlElement xmlele1 = xmldoc.CreateElement("", "Config", "");
            xmltext = xmldoc.CreateTextNode("");
            xmlele1.AppendChild(xmltext);
            //创建元素节点的属性节点
            xmlele1.SetAttribute("id","1");
            //绑定元素节点Config在ModelCofig下
            xmldoc.ChildNodes.Item(1).AppendChild(xmlele1);

            ////添加第二个子元素
            //XmlElement xmlele11 = xmldoc.CreateElement("","Config","");
            //xmltext = xmldoc.CreateTextNode("配置2");
            //xmlele11.AppendChild(xmltext);
            //xmlele11.SetAttribute("id","2");
            //xmldoc.ChildNodes.Item(1).AppendChild(xmlele11);

            //创建第一个子元素的子元素
            XmlElement xmlele2 = xmldoc.CreateElement("","FactoryName","");
            xmltext = xmldoc.CreateTextNode(oms.Factory);
            xmlele2.AppendChild(xmltext);
            xmldoc.ChildNodes.Item(1).AppendChild(xmlele1).AppendChild(xmlele2);

            XmlElement xmlele3 = xmldoc.CreateElement("","CompressMethod","");
            xmltext = xmldoc.CreateTextNode(oms.Compress);
            xmlele3.AppendChild(xmltext);
            xmldoc.ChildNodes.Item(1).AppendChild(xmlele1).AppendChild(xmlele3);

            XmlElement xmlele4 = xmldoc.CreateElement("","UpMethod","");
            xmltext = xmldoc.CreateTextNode(oms.UpMethod);
            xmlele4.AppendChild(xmltext);
            xmldoc.ChildNodes.Item(1).AppendChild(xmlele1).AppendChild(xmlele4);

            //保存xml成文件
            //判断保存的路径是否存在
            if (!Directory.Exists(Application.StartupPath + @"\Tempate"))
            {
                Directory.CreateDirectory(Application.StartupPath + @"\Tempate");
            }
            //保存xml成文件(程序路径下的tempate)
            xmldoc.Save(Application.StartupPath + @"\Tempate\" + oms.Name + ".xml");

            MessageBox.Show("创建"+oms.Name +".xml成功!","信息提示:");
            //xmldoc.Save(oms.Name+".xml");
        }    

3.2) 导入xml文件的源码

 /// <summary>
        /// 导入模板方法
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTempate_Click(object sender, EventArgs e)
        {
             OpenFileDialog ofg = new OpenFileDialog();
            //判断保存的路径是否存在
            if (!Directory.Exists(Application.StartupPath + @"\Tempate"))
            {
                //创建路径
                Directory.CreateDirectory(Application.StartupPath + @"\Tempate");
            }
            //设置默认打开路径(项目安装路径+Tempate\)
            ofg.InitialDirectory = Application.StartupPath + @"\Tempate";
            //设置打开标题、后缀
            ofg.Title = "请选择导入xml文件";
            ofg.Filter = "xml文件|*.xml";
            string path = "";
            //创建字典集合对象   List<string> listNode = new List<string>();   
            Dictionary<string, string> dict = new Dictionary<string, string>();

            //获取打开的文件路径
            if (ofg.ShowDialog() == DialogResult.OK) {
                //得到打开的文件路径(包括文件名)
                path = ofg.FileName.ToString();
            }
            //判断是否选择xml文件
            if (path.Length > 0)
            {
                //创建xml类对象,并将文件加载到对象中
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(path);
                //选择xml根节点
                XmlNode model = doc.SelectSingleNode("Model");
                //根节点下子孙节点列表
                XmlNodeList config = model.ChildNodes;
                //遍历model下的所有子节点(config)
                foreach (XmlNode p in config)
                {
                    //将根结点的孩子结点转换为一个XmlElement元素
                    XmlElement xe = (XmlElement)p;
                    //获取XMlElement元素的孩子节点
                    XmlNodeList xnl = xe.ChildNodes;
                    //遍历config 下所有子节点
                    foreach (XmlNode x in xnl)
                    {
                        //MessageBox.Show(""+ x.Name);
                        string chi = x.FirstChild.InnerText.Replace("\"", "");
                        //保存在字典集合中(节点名,节点信息)   listNode.Add(chi);
                        dict.Add(x.Name, chi);
                    }
                }

               //加载xml保存信息

                //获取xml文件名称
                string tempateName = path.Substring(path.LastIndexOf('\\') + 1);
                string[] strs = tempateName.Split('.');
                this.txt_Model.Text = strs[0];

                //加载厂商名称
                if (dict["FactoryName"] == this.rad_3shape.Text) {
                    this.rad_3shape.Checked = true;
                }
                if (dict["FactoryName"] == this.rad_ruike.Text) {
                    this.rad_ruike.Checked = true;
                }
                //加载压缩方式
                if (dict["CompressMethod"] == this.rad_3oxz.Text)
                {
                    this.rad_3oxz.Checked = true;
                }
                if (dict["CompressMethod"] == this.rad_zip.Text)
                {
                    this.rad_zip.Checked = true;
                }
                //加载厂商名称
                if (dict["UpMethod"] == this.rad_web.Text)
                {
                    this.rad_web.Checked = true;
                }
                if (dict["UpMethod"] == this.rad_ftp.Text)
                {
                    this.rad_ftp.Checked = true;
                }
                //导入提示
                MessageBox.Show("导入" + strs[0] + ".xml成功!", "信息提示:");
            }
        }

 4)导入视图页面

posted @ 2017-01-03 15:14  小小邪  阅读(1071)  评论(0编辑  收藏  举报