C# -XML用法(XmlDocument )
使用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 )相关推荐
- crossdomain.xml用法
使用crossdomain.xml让Flash可以跨域传输数据 本文来自http://www.mzwu.com/article.asp?id=975 一.概述 位于www.mzwu.com域中的SWF ...
- linq To Xml 用法简介
先看实例: 在配置文件中加入: <add key="SaveXmlPath" value="D:\SaveXml.xml"/> 而后创建一个实全类: ...
- C# 操作XML文件 XmlDocument和XElement
首先在根目录下新建一个config.xml: <?xml version="1.0" encoding="utf-8"?> <Config&g ...
- TinyXml2解析xml用法例子
1.认识 在使用之前,先大致了解一下TinyXml2结构,只有清楚地知道这些类都指什么内容,那么在解析任何xml时,都可以很好利用TinyXml2中提供的API. 比如如下的xml: <?xml ...
- shape的xml用法
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- xml java jaxb_【Java】JAXB操作XML用法详解
什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.在JAX-WS(Java的W ...
- mybatis无mapper.xml用法
在datasource配置类上加上 @MapperScan("cn.x.x.dao") @Configuration <project xmlns="http:// ...
- 【C#】xml解析对比XDocument和XmlDocument
XDocument比XmlDocument好用太多. XmlDocument 位于 using System.Xml; 下 XmlDocument位于using System.Xml.Linq;下 X ...
- C#操作xml方法(通过XmlDocument)
XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized Markup Lan ...
最新文章
- MyClouds-V1.0 发布,微服务治理及快速开发平台
- 机器人大潮中暗藏多少伪命题
- [转]网上收集的Html颜色代码全集
- C++和 C 的区别
- C# 调Win32 API SendMessage简单用法及wMsg常量
- WPF/WPFE笔记(一):准备工作
- 【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
- ZZULIOJ 1158: 又是排序(指针专题)
- P1502 窗口的星星(扫描线入门第一题)
- 水性丙烯酸酯共聚物流变改性剂行业调研报告 - 市场现状分析与发展前景预测
- 抹机王怎么一键新机_[电脑] [第六届机王争霸赛]水冷组——十年 by ilas 完工
- 网站被跳转到联通域名无法访问页面
- Altium Designer 18安装教程
- 基于分布式光纤传感的高压电力线路异常监测探讨
- android中TextView属性之autoText解析
- Android 矢量图动画(完结篇)
- vue 关于数组的固定随机排序
- 一起来学FPGA(vhdl)三:分频器实验
- word2016自带公式编辑器转换成mathtype类型公式,以及设置公式大小
- content=IE=Edge是什么意思?
热门文章
- Android系统级开发进程清理功能的一些记录和发现(二)
- 清除 挖矿脚本 攻击
- linux USB大容量设备驱动入门之读取U盘容量
- 美团高管告诉你“35岁以上的程序员都去哪了”
- AndroidX RecyclerView总结-Recycler
- 中科大计算机学院冯新宇动向,中国科大在并发程序精化验证领域取得突破
- 易我录屏助手如何减小所录视频文件的大小?
- 同一局域网主机连接另一台电脑的虚拟机
- Spring Data JPA 分页
- Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列