使用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;}

C# -XML用法(XmlDocument )相关推荐

  1. crossdomain.xml用法

    使用crossdomain.xml让Flash可以跨域传输数据 本文来自http://www.mzwu.com/article.asp?id=975 一.概述 位于www.mzwu.com域中的SWF ...

  2. linq To Xml 用法简介

    先看实例: 在配置文件中加入: <add key="SaveXmlPath" value="D:\SaveXml.xml"/> 而后创建一个实全类: ...

  3. C# 操作XML文件 XmlDocument和XElement

    首先在根目录下新建一个config.xml: <?xml version="1.0" encoding="utf-8"?> <Config&g ...

  4. TinyXml2解析xml用法例子

    1.认识 在使用之前,先大致了解一下TinyXml2结构,只有清楚地知道这些类都指什么内容,那么在解析任何xml时,都可以很好利用TinyXml2中提供的API. 比如如下的xml: <?xml ...

  5. shape的xml用法

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  6. xml java jaxb_【Java】JAXB操作XML用法详解

    什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.在JAX-WS(Java的W ...

  7. mybatis无mapper.xml用法

    在datasource配置类上加上 @MapperScan("cn.x.x.dao") @Configuration <project xmlns="http:// ...

  8. 【C#】xml解析对比XDocument和XmlDocument

    XDocument比XmlDocument好用太多. XmlDocument 位于 using System.Xml; 下 XmlDocument位于using System.Xml.Linq;下 X ...

  9. C#操作xml方法(通过XmlDocument)

    XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized  Markup Lan ...

最新文章

  1. MyClouds-V1.0 发布,微服务治理及快速开发平台
  2. 机器人大潮中暗藏多少伪命题
  3. [转]网上收集的Html颜色代码全集
  4. C++和 C 的区别
  5. C# 调Win32 API SendMessage简单用法及wMsg常量
  6. WPF/WPFE笔记(一):准备工作
  7. 【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
  8. ZZULIOJ 1158: 又是排序(指针专题)
  9. P1502 窗口的星星(扫描线入门第一题)
  10. 水性丙烯酸酯共聚物流变改性剂行业调研报告 - 市场现状分析与发展前景预测
  11. 抹机王怎么一键新机_[电脑] [第六届机王争霸赛]水冷组——十年 by ilas 完工
  12. 网站被跳转到联通域名无法访问页面
  13. Altium Designer 18安装教程
  14. 基于分布式光纤传感的高压电力线路异常监测探讨
  15. android中TextView属性之autoText解析
  16. Android 矢量图动画(完结篇)
  17. vue 关于数组的固定随机排序
  18. 一起来学FPGA(vhdl)三:分频器实验
  19. word2016自带公式编辑器转换成mathtype类型公式,以及设置公式大小
  20. content=IE=Edge是什么意思?

热门文章

  1. Android系统级开发进程清理功能的一些记录和发现(二)
  2. 清除 挖矿脚本 攻击
  3. linux USB大容量设备驱动入门之读取U盘容量
  4. 美团高管告诉你“35岁以上的程序员都去哪了”
  5. AndroidX RecyclerView总结-Recycler
  6. 中科大计算机学院冯新宇动向,中国科大在并发程序精化验证领域取得突破
  7. 易我录屏助手如何减小所录视频文件的大小?
  8. 同一局域网主机连接另一台电脑的虚拟机
  9. Spring Data JPA 分页
  10. Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列