当前位置: 首页 > news >正文

c# 读取xml文件内的数据

好多大型的项目,把一些固定的参数都存在 xml文件里。

创建c# winfom 项目,test_xml

创建resources文件夹存放xml文件

创建parameters.xml文件

<root>
<test_xml>
<param name ="threshold" value ="128"/>
<param name ="sum_max" value ="100"/>
<param name ="sum_min" value ="50"/>
<param name ="ratio" value ="0.75"/>
<param name ="img_path" value ="C:\\Users\\86957\\Pictures\\CCD\\0243480-20240326103539.jpg"/>
</test_xml>
</root>

根目录root

项目目录test_xml

param+内容

===========================

c# 读取xml文件内的数据的方法如下:

A创建字典用于存放数据:

            Dictionary<string, string> Params = new Dictionary<string, string>();

B加载文件:
XmlDocument presentxml = new XmlDocument();
presentxml.Load(FileName);

       (XmlDocument属于System.Xml命名空间,是XML文档的内存表示)

 

C定位:
XmlNodeList paramNodes = presentxml.SelectNodes("/root/test_xml/param"); 

(XmlNodeList表示通过XPath查询返回的节点集合)

D 读取并写入字典:
foreach (XmlNode node in paramNodes)
{
string name = node.Attributes["name"].Value;  // 获取name属性
string value = node.Attributes["value"].Value; // 获取value属性
Params.Add(name, value); // 添加到字典
}

(XmlNode表示XML文档中的单个节点(基类))

完整代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;namespace test_xml
{public partial class Form1 : Form{//string xmldata_path = "D:\\VS\\works\\test_xml\\test_xml\\resources\\parameters.xml";//绝对string xmldata_path = "../../resources/parameters.xml";//相对public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Dictionary<string, string> Params = new Dictionary<string, string>(ParamXML.ReadParamXML(xmldata_path));textBox1.AppendText(Params["threshold"]+"\r\n");textBox1.AppendText(Params["img_path"]+"\r\n");double difference = (int.Parse(Params["sum_max"]) - int.Parse(Params["sum_min"]))* double.Parse(Params["ratio"]);textBox1.AppendText(difference.ToString()+"\r\n");}}class ParamXML{public static Dictionary<string, string> ReadParamXML(string FileName){Dictionary<string, string> Params = new Dictionary<string, string>();XmlDocument presentxml = new XmlDocument();presentxml.Load(FileName);XmlNodeList paramNodes = presentxml.SelectNodes("/root/test_xml/param"); // 使用XPath定位节点foreach (XmlNode node in paramNodes){string name = node.Attributes["name"].Value;  // 获取name属性string value = node.Attributes["value"].Value; // 获取value属性Params.Add(name, value); // 添加到字典}return Params;}}}

http://www.xdnf.cn/news/1365787.html

相关文章:

  • 网络编程-HTTP
  • zookeeper-znode解析
  • 【动态规划】309. 买卖股票的最佳时机含冷冻期及动态规划模板
  • 深入浅出 ArrayList:从基础用法到底层原理的全面解析(中)
  • 【C语言16天强化训练】从基础入门到进阶:Day 11
  • 信号处理的核心机制:从保存、处理到可重入性与volatile
  • 系统架构设计师-计算机系统存储管理的模拟题
  • 【数据结构】栈和队列——队列
  • AR远程协助:能源电力行业智能化革新
  • 数据库迁移幂等性介绍(Idempotence)(Flyway、Liquibase)ALTER、ON DUPLICATE
  • 05 开发环境和远程仓库Gitlab准备
  • coze工作流200+源码,涵盖AI文案生成、图像处理、视频生成、自动化脚本等多个领域
  • 向量库Qdrant vs Milvus 系统详细对比
  • 智能专网升级:4G与5G混合组网加速企业数字化转型
  • FunASR基础语音识别工具包
  • 【Canvas与标牌】维兰德汤谷公司logo
  • JavaScript 中类(class)的super 关键字
  • 【YOLOv5部署至RK3588】模型训练→转换RKNN→开发板部署
  • UniApp文件上传大小限制问题解决方案
  • kafka 副本集设置和理解
  • kafka常用命令
  • 宋红康 JVM 笔记 Day07|本地方法接口、本地方法栈
  • Linux(四):进程状态
  • python项目中pyproject.toml是做什么用的
  • SDC命令详解:使用set_timing_derate命令进行约束
  • K8s高可用:Master与候选节点核心解析
  • 基于MalConv的恶意软件检测系统设计与实现
  • 力扣(用队列实现栈)
  • SSH 反向隧道:快速解决服务器网络限制
  • 蜗牛播放器 Android TV:解决大屏观影痛点的利器