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


相关推荐

  • 第12章方差分析介绍课_t检验中的第一类错误是指

    第12章方差分析介绍课_t检验中的第一类错误是指方差分析用以比较两组及以上处理之间的平均数差异的情况因素:方差分析中,用于分派组别的变量水平:因素的个别情形或个别值方差分析与t检验比较(为什么使用方差分析而不用t检验多次比较均值差异):检验α水平:做一个单独的假设检验时犯第一类错误的可能性。实验α水平:当一个实验包括多个不同的假设检验时,实验中全部独立的检验所犯第一类错误积累后的犯错总概率。通常,实验α水平比任何一个单独的检验的α值大。方差分析可在一次实验中同时进行三个及以上均值差异的比较,避免了实验α的膨胀。方差分析…

    2022年10月10日
    0
  • 在线css三角形生成器 「干货」[通俗易懂]

    在线css三角形生成器 「干货」[通俗易懂]为了提高前端开发效率,笔者先后写了上百个前端工具,有些是给公司内部使用的,有些单纯是因为自己太“懒”,不想写代码,所以才“被迫”做的.接下来介绍的一款工具——css三角形生成器也是因为之前想要解放设计师的生产力,自己又懒得切图或者写css代码,所以想来想去还是自己做一个能自动生成css三角形代码的工具吧.接下来笔者就来带大家介绍一下这个工具的用途和实现方案,方便大家后续可以扩展出更多的“懒人工具”.在线css三角形生成器预览由预览动画我们可以看到通过在线工具我们可以轻松配置..

    2025年6月15日
    0
  • linux如何停掉计划任务,Linux系统的任务计划

    linux如何停掉计划任务,Linux系统的任务计划Linux系统的计划任务Linux系统运维工程师大部分管理工作都是通过定期自动执行某一脚本来完成的。Cron功能很重要,牢记!!!计划功能Crontab:-u:(user)表示指定某个用户,不加-u则为当前用户-e:表示指定计划任务-l:(list)表示列出计划任务-r:(remove)表示删除计划任务#crontab-e011005063echo”ok”>/root/cr…

    2022年7月15日
    15
  • javah -jni_java this用法

    javah -jni_java this用法目录一、native关键字二、javah命令一、native关键字native即JNI,JavaNativeInterface凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为JavaNativeInterface(Java本地接口)。二、javah命令1首先找到java文件目…

    2022年9月24日
    0
  • JVM垃圾回收器_jdk6默认垃圾回收器

    JVM垃圾回收器_jdk6默认垃圾回收器JVM垃圾回收器垃圾回收器分类说明垃圾回收器工作原理垃圾回收器分类说明如果说垃圾回收算法是内存回收的方法论,那么垃圾回收器就是内存回收的具体实现,下图展示了7中作用于不同分代的收集器。其中用于新生代的回收器包括Serial,PraNew,ParallelScavenge,回收老年代的收集器包括SerialOld,Parallelold,CMS,还有作用于回收整个java堆的G1收集器,不同收集器之间的连线表示他们可以搭配使用。Serial收集器(复制算法):新生代单线程收集器,标记和清理

    2022年9月11日
    0
  • function properly_acceptive

    function properly_acceptivehttp://msdn.microsoft.com/zh-cn/library/ms737524.aspx

    2022年9月29日
    0

发表回复

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

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