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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • label 的autosize属性

    label 的autosize属性label的autosize属性,显示不全的问题。转载于:https://www.cnblogs.com/sfbrzkh/p/4487911.html

    2022年5月20日
    32
  • 求z=x-y的概率密度_X和Y独立同分布

    求z=x-y的概率密度_X和Y独立同分布Z=X+Y型概率密度的求解@(概率论)Z=g(X,Y)Z=g(X,Y)总结过一次,一般方法是可以由分布函数再求导得到概率密度,计算一定更要小心才能得到正确的解。FZ(z)=P(Z≤z)=P(g(X,Y)≤z)=∫∫g(x,y)≤zf(x,y)dxdyF_Z(z)=P(Z\leqz)=P(g(X,Y)\leqz)\\=\int\int_{g(x,y)\leqz}f(x,y)d

    2022年10月18日
    4
  • Q学习(Q-learning)入门小例子及python实现

    Q学习(Q-learning)入门小例子及python实现一、从马尔科夫过程到Q学习#有一定基础的读者可以直接看第二部分Q学习(Q-learning)算法是一种与模型无关的强化学习算法,以马尔科夫决策过程(MarkovDecisionProcesses,MDPs)为理论基础。标准的马尔科夫决策过程可以用一个五元组<S,A,P,R,γ>表示,其中:S是一个离散有界的状态空间; A是一个离散的动作空间; P为状态转…

    2022年10月4日
    3
  • PMOS开关电路_大功率mos管开关电路

    PMOS开关电路_大功率mos管开关电路本次项目上需要实现的功能是利用AO3401PMOS设计一个开关电路,实现一款设备的开关控制。被控设备12V供电,供电电流小于3A即可。且为了提高响应速度,使流过该设备的电流尽可能的大。该设备内阻大约为6ohm。AO3401产品参数其他参数芯片内部等效电路引脚顺序设计电路设计并调试好的电路如下图所示,由于供电电压和驱动电压均可以使用12V,所以采用了如下较为简单的方案。如图所示,Q9AO3401的栅极(G)通过100k电阻上拉到12V,源级(S)直…

    2026年2月5日
    4
  • JAVA四舍五入保留一位小数

    JAVA四舍五入保留一位小数newBigDecimal(speed).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()

    2022年5月11日
    57
  • ADO.NET基础

    ADO.NET基础ADO.NET基础

    2022年4月24日
    39

发表回复

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

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