C# -XML用法(XmlDocument )

C# -XML用法(XmlDocument )使用visualstudio中自带的xml解析器,引入System.Xml命名空间。1.向文件中写入配置xml文件实现效果:<?xmlversion="1.0"encoding="utf-8"?><某某某某公司><执行董事兼总经理>曾振帅</执行董事兼总经

大家好,又见面了,我是你们的朋友全栈君。

使用visual studio中自带的xml解析器,引入 System.Xml 命名空间。

1.向文件中写入配置xml文件

实现效果:

<?xml version=”1.0″ encoding=”utf-8″?>

<某某某某公司>
<执行董事兼总经理>曾振帅</执行董事兼总经理>
<副总经理>老王
<经营经理>王二</经营经理>
<生产经理>李四</生产经理>
<财务经理>张三</财务经理>
</副总经理>
</某某某某公司>

/// <summary>
        /// 创建xml文件
        /// </summary>
        /// <returns></returns>
        static XmlDocument CreateXml()
        {
            XmlDocument xmlDoc= new XmlDocument();
            if (File.Exists(FilePath))
            {
                Console.WriteLine("目标xml文件已存在并进行覆盖");
            }
            XmlDeclaration xmldec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
            xmlDoc.AppendChild(xmldec);
            XmlElement root = xmlDoc.CreateElement("某某某某公司");
            xmlDoc.AppendChild(root);

            XmlElement node_General_Manager = xmlDoc.CreateElement("执行董事兼总经理");
            node_General_Manager.InnerText = "曾振帅";
            root.AppendChild(node_General_Manager);

            XmlElement node_Deputy_General_Manager = xmlDoc.CreateElement("副总经理");
            node_Deputy_General_Manager.InnerText = "老王";
            root.AppendChild(node_Deputy_General_Manager);

            XmlElement node_Business_Manager = xmlDoc.CreateElement("经营经理");
            node_Business_Manager.InnerText = "王二";
            node_Deputy_General_Manager.AppendChild(node_Business_Manager);


            XmlElement node_Production_Manager = xmlDoc.CreateElement("生产经理");
            node_Production_Manager.InnerText = "李四";
            node_Deputy_General_Manager.AppendChild(node_Production_Manager);

            XmlElement node_Financial_Manager = xmlDoc.CreateElement("财务经理");
            node_Financial_Manager.InnerText = "张三";
            node_Deputy_General_Manager.AppendChild(node_Financial_Manager);

            xmlDoc.Save(FilePath);
            return xmlDoc;
        }

2.读取xml配置文件

这儿读取的xml需要根据需要的xml文件进行读取,需要提前知道xml文件中的结构,得到我们需要的数据。

这儿我们通过我们的配置文件获取我们的需要的“副总经理”中的名字。

 /// <summary>
        /// 获取xml文件
        /// </summary>
        /// <returns></returns>
        static XmlDocument GetXml()
        {
            XmlDocument xmlDoc = new XmlDocument();
            if (!File.Exists(FilePath))
            {
                Console.WriteLine("目标xml文件不存在");
                return null;
            }
            xmlDoc.Load(FilePath);
            return xmlDoc;
        }


        /// <summary>
        /// 获取副总经理名字
        /// </summary>
        /// <returns></returns>
        static string GetDeputy_General_Manager(string name)
        {
            XmlDocument xml = GetXml();
            foreach (XmlNode node in xml)
            {
                if (node.Name.Equals("某某某某公司"))
                {
                    foreach (XmlNode nodeI in node)
                    {
                        if (nodeI.Name.Equals(name))
                        {
                            return nodeI.InnerText;
                        }
                    }
                }
            }
            return null;
        }

3.删除xml中指定节点


        /// <summary>
        /// 删除指定名字的节点及其子节点
        /// </summary>
        /// <param name="name"></param>
        /// <param name="root"></param>
        static void DeleteNode(string name,XmlNode root)
        {
            foreach (XmlNode node in root)
            {
                if (node.Name.Equals(name))
                {
                    node.RemoveAll();
                }
                else
                {
                    DeleteNode(name,node);
                }
            }
             xmlDoc.Save(FilePath);
        }

注意:对xml配置文件进行修改之后记得保存!!!

4. 设置节点属性

实现:

<?xml version=”1.0″ encoding=”utf-8″?>

<某某某某公司 ab=“abc”>
<执行董事兼总经理 name=“曾振帅” />
<副总经理 name=“老王”>
<经营经理 name=“王二” />
<生产经理 name=“李四” />
<财务经理 name=“张三” />
</副总经理>
</某某某某公司>

		 /// <summary>
        /// 创建xml文件
        /// </summary>
        /// <returns></returns>
        static XmlDocument CreateXml()
        {

            XmlDocument xmlDoc = new XmlDocument();
            if (File.Exists(FilePath))
            {
                Console.WriteLine("目标xml文件已存在并进行覆盖");
            }
            XmlDeclaration xmldec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
            xmlDoc.AppendChild(xmldec);
            XmlElement root = xmlDoc.CreateElement("某某某某公司");
            root.SetAttribute("ab","abc");              //设置节点属性
            xmlDoc.AppendChild(root);

            XmlElement node_General_Manager = xmlDoc.CreateElement("执行董事兼总经理");
            node_General_Manager.SetAttribute("name", "曾振帅");            //设置节点属性
            root.AppendChild(node_General_Manager);

            XmlElement node_Deputy_General_Manager = xmlDoc.CreateElement("副总经理");
            node_Deputy_General_Manager.SetAttribute("name", "老王");                  //设置节点属性
            root.AppendChild(node_Deputy_General_Manager);

            XmlElement node_Business_Manager = xmlDoc.CreateElement("经营经理");
            node_Business_Manager.SetAttribute("name", "王二");
            node_Deputy_General_Manager.AppendChild(node_Business_Manager);


            XmlElement node_Production_Manager = xmlDoc.CreateElement("生产经理");
            node_Production_Manager.SetAttribute("name", "李四");
            node_Deputy_General_Manager.AppendChild(node_Production_Manager);

            XmlElement node_Financial_Manager = xmlDoc.CreateElement("财务经理");
            node_Financial_Manager.SetAttribute("name", "张三");
            node_Deputy_General_Manager.AppendChild(node_Financial_Manager);

            xmlDoc.Save(FilePath);
            return xmlDoc;
        }

5.获取节点属性

 /// <summary>
        /// 获取 经理名字 (Xml 属性)
        /// </summary>
        /// <returns></returns>
        static string GetManagerName(string name)
        {
            XmlDocument xml = GetXml();
            foreach (XmlNode node in xml)
            {
                if (node.Name.Equals("某某某某公司"))
                {
                    foreach (XmlNode nodeI in node)
                    {
                        if (nodeI.Name.Equals("执行董事兼总经理"))
                        {
                            foreach (XmlNode nodeII in nodeI)
                            {
                                if (nodeII.Name.Equals("副总经理"))
                                {
                                    foreach (XmlNode nodeIII in nodeII)
                                    {
                                        if (nodeIII.Name.Equals(name))
                                        {
                                            foreach (XmlAttribute item in nodeIII.Attributes)
                                            {
                                                if(item.Name=="name")
                                                {
                                                    return item.Value;
                                                }
                                                
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return null;
        }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150727.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unboundlocalerror python_Python问题:UnboundLocalError: local variable ‘xxx’ referenced before assignme…「建议收藏」

    unboundlocalerror python_Python问题:UnboundLocalError: local variable ‘xxx’ referenced before assignme…「建议收藏」参考链接:【解析】UnboundLocalError:localvariable’xxx’referencedbeforeassignment在函数外部已经定义了变量n,在函数内部对该变量进行运算,运行时会遇到了这样的错误:主要是因为没有让解释器清楚变量是全局变量还是局部变量。【案例】如下代码片所示:deftest():ifvalue==1:a+=1returnavalue=…

    2022年6月24日
    24
  • linux系统休眠唤醒_centos休眠后怎么唤醒

    linux系统休眠唤醒_centos休眠后怎么唤醒背景介绍:睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的一些缺陷(所有模块必须同时睡下或者唤醒),在某些情况下,这会导致能耗的白白浪费。因此Android在标准Linux睡眠唤醒的机制上作了新的改动(wake_lock唤…

    2022年9月18日
    4
  • Spring MVC 3 深入总结

    Spring MVC 3 深入总结

    2021年12月4日
    47
  • Ubuntu安装Opencv3

    Ubuntu安装Opencv3Ubuntu 安装 Opencv31 安装准备 2 安装 3 配置环境 4 检验环境 Ubuntu20 04 Opencv3 4 141 安装准备 1 1 安装 cmakesudoapt getinstallcm 2 安装依赖环境 sudoapt getinstallbu essentiallib 0 devlibavcode devlibavform devlibjpeg devlibswscal devlibtiff5 devsudoapt

    2025年9月1日
    3
  • jetty idle timeout expired:30000/30000 ms

    jetty idle timeout expired:30000/30000 ms

    2021年9月13日
    196
  • 线程池参数到底要怎么配?这可能是最好的答案[通俗易懂]

    线程池参数到底要怎么配?这可能是最好的答案[通俗易懂]文章目录1线程池快速回顾2现有设置参数的方法及不足3如何设置核心线程数(corePoolSize)4如何设置最大线程数(maxPoolSize)5如何改变等待队列长度????Java学习:Java从入门到精通总结????Spring系列推荐:Spring源码解析????最近更新:2022年1月8日????个人简介:通信工程本硕????、阿里新晋猿同学????。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤????点赞????收藏⭐留言????都是我

    2022年5月3日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号