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


相关推荐

  • 网络协议篇之SNMP协议(一)——SNMP报文协议

    网络协议篇之SNMP协议(一)——SNMP报文协议前言:最近工作中遇到大量的网络协议开发,现就其中一些网络协议的基础知识进行整理,文中借鉴了一些大神的整理,后面会贴上链接,如侵删)

    2022年10月17日
    0
  • android之SeekBar和RatingBar

    今天在看一个音乐播放器的源代码时候用到了SeekBar,就翻出来mars老师的视频复习了一下,然后综合使用了一下.首先先看下运行效果:下来我们看看布局文件的设计:main.xml: 1 2

    2022年3月9日
    35
  • 如何修改ftp服务器密码,ftp密码,3种修改ftp密码的方法[通俗易懂]

    如何修改ftp服务器密码,ftp密码,3种修改ftp密码的方法[通俗易懂]其实FTP服务就相当于共享文件,你要进入FTP服务器首先要知道提供FTP这台电脑的IP或者域名。FTP服务器是可以随意设置访问的用户名和密码的,当然也可以设置匿名访问(设置了匿名访问,用户就不需要输用户名和密码了)IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作…

    2022年10月23日
    0
  • 详细讲解 移植Uboot到ARM9开发系统上

    详细讲解 移植Uboot到ARM9开发系统上首先了解ARMer9开发系统硬件设计上和三星原装SMDK2410之间的区别。让uboot在ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot就可以在ARMer9开发系统上正常地从串口输出,进入提示符。很多命令都可以使用,当然有些命令需要做修改。 SMDK2410:norFlash是AMD的1M的;ARMer9:是IntelE28F

    2022年5月1日
    44
  • 华为交换机链路聚合trunk_华为删除链路聚合命令

    华为交换机链路聚合trunk_华为删除链路聚合命令文章目录一、为什么要用到聚合二、链路聚合三、拓扑四、基本配置五、部署LinkAggregation-链路聚合一、为什么要用到聚合1、二层环境为什么要用到聚合(1)接入层的流量剧增;(2)现行存储数据剧增;(3)监控网络运行大数据流量;

    2025年7月27日
    1
  • 使用 Windows Live Writer[通俗易懂]

    使用 Windows Live Writer[通俗易懂]导航1.安装2.配置3.使用入门4.技巧1.安装绿色版下载地址:http://www.xdowns.com/soft/1/16/2007/Soft_38256.html2.配置以下内容是配置CSDN博客(其他的BLOG配置自己摸索):1.在WindowsLiveWriter,点击菜单“日志/添加日志账户”

    2022年10月7日
    1

发表回复

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

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