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)
上一篇 2022年6月19日 下午10:00
下一篇 2022年6月19日 下午10:00


相关推荐

  • 最新朋友圈集赞生成器_朋友圈点赞生成器免费

    最新朋友圈集赞生成器_朋友圈点赞生成器免费大家好这是一款朋友圈积攒截图小程序里面内涵三款样式生成,一款图文,一款分享,一款查看的样式也就是我们微信朋友圈所用到的样式就包含了里面的流量主那些可以用户自由的添加哈!赞的数量那些可以用户自定义的哈另外所需的内容也是用户自定义的安装方法的话和往常一样!直接微信开发者工具打开源码然后设置一个合法域名上传审核就可以了合法域名在压缩包里面,搭建解压了就可以看到了小程序源码下载地址:…

    2025年9月17日
    12
  • vi中如何跳转到指定行数

    vi中如何跳转到指定行数

    2021年10月29日
    66
  • linux ntp校时 日志,Linux NTP校时

    linux ntp校时 日志,Linux NTP校时1 安装客户端 root 权限运行 apt getinstallnt 修改配置文件 etc default ntpdate NTPSERVERS ntp fudan edu cn 完成以上操作 即可在下次开机时 自动校时如果不想等到下次开机 则直接用 root 用户 直接运行 ntpdatentp fudan edu cn 即可校时成功

    2026年3月20日
    2
  • ExecuteScalar 返回值

    ExecuteScalar 返回值ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行Execute=执行;scalar=数量;so,从字面意思来讲,可将ExecuteScalar和ExecuteNonQuery对比来学习。ExecuteScalar()方法的作用是:执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。

    2022年6月26日
    49
  • js禁止前进后退

    js禁止前进后退在ie6,7,8下有效。

    2022年7月25日
    10
  • 使用EPPlus(C#)读写Excel

    使用EPPlus(C#)读写ExcelEPPlus是使用OpenOfficeXML格式(xlsx)读写Excel2007/2010文件的.net开发库。EPPlus支持:单元格范围、单元格样式(边框,颜色,填充,字体,数字,对齐)、图表、图片、形状、批注、表格、保护加密、数据透视表、数据验证、条件格式、VBA、公式计算等等。

    2022年6月22日
    365

发表回复

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

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