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

C#使用哈希表对XML文件进行查询

目录

一、使用的方法 

1.Hashtable哈希表

2.Hashtable哈希表的Add方法

(1)定义

(2)示例

3.XML文件的使用 

二、实例

1.源码

2.生成效果


        可以通过使用哈希表可以对XML文件进行查询。

一、使用的方法 

1.Hashtable哈希表

        Hashtable通常称为哈希表,它表示键/值对的集合,这些键/值对根据键的哈希代码进行组织,它的每个元素都是一个存储于DictionaryEntry对象中的键/值对。

        注意:Hashtable哈希表中的键不能为空引用,但值可以。

2.Hashtable哈希表的Add方法

(1)定义

        Hashtable哈希表的Add方法用来将带有指定键和值的元素添加到Hashtable哈希表中。

public virtual void Add (object key, object? value);参数
key    Object
要添加的元素的键。value    Object
要添加的元素的值。 该值可以为 null。实现
Add(Object, Object)
例外
ArgumentNullException
key 为 null。ArgumentException
Hashtable 中已存在具有相同键的元素。NotSupportedException
Hashtable 为只读。
- 或 -
Hashtable 具有固定的大小。

(2)示例

// Hashtable.Add(Object, Object) 方法
using System.Collections;
namespace _107_1
{public class SamplesHashtable{public static void Main(){// Creates and initializes a new Hashtable.var myhash = new Hashtable//集合方法{{ "one", "The" },{ "two", "quick" },{ "three", "brown" },{ "four", "fox" }};//等效语句,Add方法//var myhash = new Hashtable();//myhash.Add("one", "The");//myhash.Add("two", "quick");//myhash.Add("three", "brown");//myhash.Add("four", "fox");// Displays the Hashtable.Console.WriteLine("The Hashtable contains the following:");PrintKeysAndValues(myhash);}public static void PrintKeysAndValues(Hashtable myhash){Console.WriteLine("\t-KEY-\t-VALUE-");foreach (DictionaryEntry de in myhash)Console.WriteLine($"\t{de.Key}:\t{de.Value}");}}
}
/*
运行效果:
The Hashtable contains the following:-KEY-   -VALUE-three:  brownfour:   foxtwo:    quickone:    The*/

3.XML文件的使用 

        XML是eXtensible Markup Language的缩写,它是一种类似于HTML的标记语言。XML以简易而标准的方式保存各种信息(如文字和数字等信息),适用于不同应用程序间的数据交换,而这种交换不以预先定义的一组数据结构为前提,增强了可扩展性。

二、实例

1.源码

// 用哈希表查询XML文件
using System.Collections;
using System.Xml;namespace _107
{public partial class Form1 : Form{private Label? label1;private Label? label2;static ComboBox? comboBox1;static ComboBox? comboBox2;public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(12, 21),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "电台名称:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(12, 52),Name = "label2",Size = new Size(68, 17),TabIndex = 1,Text = "电台网址:"};// // comboBox1// comboBox1 = new ComboBox{FormattingEnabled = true,Location = new Point(77, 13),Name = "comboBox1",Size = new Size(195, 25),TabIndex = 2};// // comboBox2// comboBox2 = new ComboBox{FormattingEnabled = true,Location = new Point(77, 44),Name = "comboBox2",Size = new Size(195, 25),TabIndex = 3};// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(284, 81);Controls.Add(comboBox2);Controls.Add(comboBox1);Controls.Add(label2);Controls.Add(label1);Name = "Form1";Text = "用哈希表查询XML文件";Myhash();}static void Myhash(){Hashtable myHashtable = SelectXML("BroadCastInfo.xml");     //使用自定义方法实例化哈希表对象IDictionaryEnumerator IDEnumerator = myHashtable.GetEnumerator();while (IDEnumerator.MoveNext())                             //循环访问哈希表{comboBox1!.Items.Add(IDEnumerator.Value!.ToString()!);  //显示电台名称comboBox2!.Items.Add(IDEnumerator.Key.ToString()!);     //显示电台网址}comboBox1!.SelectedIndex = comboBox2!.SelectedIndex = 0;    //设置默认选项}#region 在XML文件中查找电台地址及名称/// <summary>/// 在XML文件中查找电台地址及名称,BCastInfo文件存储于启动目录/// </summary>/// <param name="strPath">XML文件路径</param>/// <returns>Hashtable对象,用来记录找到的电台地址及名称</returns>static Hashtable SelectXML(string strPath){Hashtable HTable = [];  //实例化哈希表对象XmlDocument doc = new();//实例化XML文档对象doc.Load(strPath);      //加载XML文档XmlNodeList xnl = doc.SelectSingleNode("BCastInfo")!.ChildNodes;//获取NewDataSet节点的所有子节点string strVersion = "";     //定义一个字符串,用来记录电台地址string strInfo = "";        //定义一个字符串,用来记录电台名称foreach (XmlNode xn in xnl) //遍历所有子节点{XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型if (xe.Name == "DInfo") //判断节点名为DInfo{XmlNodeList xnlChild = xe.ChildNodes;   //继续获取xe子节点的所有子节点foreach (XmlNode xnChild in xnlChild)   //遍历{XmlElement xeChild = (XmlElement)xnChild;//转换类型if (xeChild.Name == "Address"){strVersion = xeChild.InnerText; //记录电台地址}if (xeChild.Name == "Name"){strInfo = xeChild.InnerText;    //记录电台名称}}HTable.Add(strVersion, strInfo);        //向哈希表中添加键值}}return HTable;}#endregion}
}

2.生成效果

相关文章:

C#使用哈希表对XML文件进行查询

目录 一、使用的方法 1.Hashtable哈希表 2.Hashtable哈希表的Add方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;示例 3.XML文件的使用 二、实例 1.源码 2.生成效果 可以通过使用哈希表可以对XML文件进行查询。 一、使用的方法 1.Hashtable哈希表…...

vscode写MATLAB配置

vscode写MATLAB python下载 官网说明Versions of Python Compatible with MATLAB Products by Release - MATLAB & Simulink 不确定这三列都表示什么意思&#xff0c;尽量安装这三列都有的python版本吧&#xff0c;我安装的 MATLAB R2023b,python选择的是3.11.5 …...

第13章 网络 Page734 “I/O对象”的链式传递 单独的火箭发射函数,没有用对的智能指针

上一篇博文中&#xff0c;我们使用单独的火箭发射函数&#xff0c;结果什么结果也没有得到&#xff0c;原因是launch_rocket()函数结束时&#xff0c;其内的局部对象counter生命周期也结束了 那么可以将counter改为指针吗&#xff1f;在堆中分配&#xff0c;这样当函数退出时&…...

Git 存储大文件

Git 存储大文件处理方法 寻找大文件的后缀LFS的安装让仓库支持LFS添加到LFS提交 寻找大文件的后缀 find . -type f -size 10M | grep -v ".git" | rev | cut -d. -f1 | rev | sort | uniq这个命令的工作原理如下&#xff1a; find .-type f -size 10M&#xff1a;查…...

使用 Mermaid 创建流程图,序列图,甘特图

使用 Mermaid 创建流程图和图表 Mermaid 是一个流行的 JavaScript 库&#xff0c;用于创建流程图、序列图、甘特图和其他各种图表。它的简洁语法使得创建图表变得非常简单&#xff0c;无需复杂的绘图工具或专业的编程技能。在本文中&#xff0c;我们将讲解如何使用 Mermaid 来创…...

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇&#xff0c;这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里&#xff1a; 政安晨&#xff1a;在Jupyter中【示例演绎】Matplotlib的官方指南&#xff08;一&#xff09;{Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…...

gem5学习(20):替换策略——Replacement Policies

目录 一、Random 二、Least Recently Used (LRU) 三、Tree Pseudo Least Recently Used (TreePLRU) 四、Bimodal Insertion Policy (BIP) 五、LRU Insertion Policy (LIP) 六、Most Recently Used (MRU) 七、Least Frequently Used (LFU) 八、First-In, First-Out (FIF…...

嵌入式Qt Qt中的字符串类

一.Qt中的字符串类 QString vs string&#xff1a; QString在Qt库中几乎是无所不在的 所有的Qt图形用户组件都依赖于QString 实验1 &#xff1a;QString 初体验 #include <QDebug> void Sample_1() {QString s "add";s.append(" "); // &q…...

函数高级(C++)

师从黑马程序员 函数默认参数 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的 语法&#xff1a;返回值类型 函数名 &#xff08;参数默认值 {}&#xff09; #include <iostream> using namespace std;//函数默认参数//如果我们自己传入数据&#xff0c;…...

jmeter-10调试取样器

文章目录 作用设置使用举例 作用 jmeter中添加调试取样器&#xff0c;可以用于检测测试过程的值如&#xff1a;变量、参数、系统设置等 设置 选择线程组右键 >>> 添加 >>> 取样器 >>> 调试取样器&#xff08;Debug Sampler&#xff09; jmeter …...

C#,二进制数的按位旋转(Bits Rotate)算法与源代码

1 二进制数的按位旋转 二进制数的按位旋转&#xff08;翻转&#xff09;是编程中常见的按位运算方法。 二进制数的按位旋转分为左转、右转。 左转意味着数据变大&#xff0c;右转意味着数据变小&#xff08;有损&#xff09;。 2 源程序 using System; using System.Text; us…...

解决ubuntu登录密码问题

解决ubuntu登录密码问题 不要随便删除密码&#xff0c;不要随便改密码&#xff0c;很容导致密码过期&#xff0c;或者密码无效。参考了很多人的做法&#xff0c;都没有得到解决。下面的过程&#xff0c;够详细了&#xff0c;我就是这么搞好的。 1、重启虚拟机&#xff0c;不停…...

Ubuntu忘记登录密码重置步骤

Ubuntu忘记登录密码重置步骤 1.开机界面长按shitf键&#xff0c;进入grub&#xff0c;并选择Advanced options for ubuntu&#xff0c;按下回车 2.选择一个较新版本的recovery mode&#xff0c;按下回车 3.会跑一些数据&#xff0c;等待跑完后会出现下面的界面&#xff0c;选择…...

MySQL数据库基础(五):SQL语言讲解

文章目录 SQL语言讲解 一、SQL概述 二、SQL语句分类 1、DDL 2、DML 3、DQL 4、DCL 三、SQL基本语法 1、SQL语句可以单行或多行书写&#xff0c;以分号结尾 2、可使用空格和缩进来增强语句的可读性 3、MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写…...

python-使用ffmpeg批量修改文件的后缀名

import os import subprocessdef convert_ogg_to_mp3(directory):for filename in os.listdir(directory):if filename.endswith(".ogg"):# 获取文件的完整路径file_path os.path.join(directory, filename)# 创建一个新的文件名&#xff0c;只是将扩展名从.ogg更改…...

关于jupyter的一些小笔记

关于jupyter的一些小笔记 1.Jupyter Notebook&#xff1a;单/多行注释&#xff0c;组合键&#xff1a;选中代码&#xff0c;按Ctrl /。 2.安装PHATE包 使用pip直接进行安装 pip install --user phate成功解决AttributeError: module ‘numpy’ has no attribute ‘float’. 报…...

macOS 安装 conda

macOS 安装 conda 安装 conda参考 Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装和管理软件包和其依赖项。 安装 conda mkdir miniconda3 cd miniconda3 bash Miniconda3-latest-MacOSX-x86_64.sh$ conda list参考 macOS 安装 conda开始使用conda...

C++并发编程 -3.同步并发操作

本文介绍如何使用条件变量控制并发的同步操作、C 并发三剑客&#xff0c;函数式编程 一.条件变量 1.概念 C条件变量&#xff08;condition variable&#xff09;是一种多线程编程中常用的同步机制&#xff0c;用于线程间的通信和协调。它允许一个或多个线程等待某个条件的发生…...

【打工日常】使用docker部署可视化工具docker-ui

一、docker-ui介绍 docker-ui是一个易用且轻量化的Docker管理工具&#xff0c;透过Web界面的操作&#xff0c;方便快捷操作docker容器化工作。 docker-ui拥有易操作化化界面&#xff0c;不须记忆docker指令&#xff0c;仅需下载镜像即可立刻加入完成部署。基于docker的特性&…...

LGAMEFI基于BPL公链开发的第一生态:开启RWA游戏娱乐与DeFi融合的新纪元

在去中心化金融&#xff08;DeFi&#xff09;与游戏娱乐的结合趋势中&#xff0c;BPL公链上的LGAMEFI项目代表了前沿的技术革新和市场领导。这种将web2上成熟页游进行RWA链改&#xff0c;不仅仅是将游戏热门领域融合&#xff0c;更是在寻找一种全新的参与者经验&#xff0c;将玩…...

Switch便携投影底座DIY:3D打印与硬件改造实战指南

1. 项目概述&#xff1a;当Switch遇上投影&#xff0c;一场桌面上的大屏革命作为一个折腾过不少游戏机外设的玩家&#xff0c;我一直在想&#xff0c;有没有办法让Switch的“便携”属性再进化一步&#xff1f;官方底座接电视固然爽&#xff0c;但总被一根线缆束缚在客厅。直到我…...

三维重建下半场,拼的全是底层基建实力!

三维重建已从算法创新竞赛正式迈入基础设施比拼新阶段&#xff0c;主流技术路线逐步收敛&#xff0c;单纯算法红利见顶&#xff0c;行业竞争核心转向数据、算力、平台、生态等底层综合能力。当下竞争不再只比模型效果&#xff0c;而是聚焦四大核心基建维度&#xff1a;采集传感…...

Cursor编辑器状态快照插件开发:一键保存与恢复工作区

1. 项目概述&#xff1a;一个专为开发者设计的“后悔药”如果你是一名重度使用 Cursor 编辑器的开发者&#xff0c;那么你一定经历过这样的场景&#xff1a;在沉浸式编码时&#xff0c;为了快速定位或修改&#xff0c;你可能会频繁地使用CtrlClick跳转到函数定义&#xff0c;或…...

开源婚礼技能库:用项目管理思维破解备婚焦虑,打造个性化高性价比婚礼

1. 项目概述&#xff1a;婚礼技能库的诞生与价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“awesome-wedding-skills”。光看名字&#xff0c;你可能会觉得这又是一个普通的“awesome”系列资源列表&#xff0c;无非是收集一些婚礼策划、摄影、化妆的链接。但当我点…...

从单体智能到组织智能:AgentOrg多智能体系统架构与实战

1. 项目概述&#xff1a;从单体智能到组织智能的范式跃迁最近在AI Agent领域&#xff0c;一个名为“AgentOrg”的开源项目引起了我的注意。这个由Angelopvtac发起的项目&#xff0c;其核心思想非常吸引人&#xff1a;它不再将AI Agent视为一个孤立的、执行单一任务的智能体&…...

Wedecode:全平台微信小程序源代码反编译与安全审计终极指南

Wedecode&#xff1a;全平台微信小程序源代码反编译与安全审计终极指南 【免费下载链接】wedecode 全自动化&#xff0c;微信小程序 wxapkg 包 源代码还原工具, 线上代码安全审计&#xff0c;支持 Windows, Macos, Linux 项目地址: https://gitcode.com/gh_mirrors/we/wedeco…...

GitHub宝藏项目:生成式AI公司全景导航图与实战应用指南

1. 项目概述&#xff1a;一份AI创业公司的全景导航图最近在GitHub上闲逛&#xff0c;发现了一个宝藏仓库&#xff0c;名字叫“awesome-generative-ai-companies”。这个项目&#xff0c;说白了&#xff0c;就是一个由社区驱动的、持续更新的生成式AI公司名录。它不像那些商业咨…...

大学正在悄悄 “僵尸化”,AI正在毁掉高等教育内核?!

【大学正在悄悄 “僵尸化”&#xff0c;AI正在毁掉高等教育内核】快速阅读&#xff1a;大学正面临一场名为“僵尸化”的危机。当学生和教授都开始将 AI 用于替代思考、替代教学、甚至替代沟通时&#xff0c;高等教育正在从知识的殿堂退化为一种由算法驱动的、高度标准化的凭证工…...

ElevenLabs泰米尔语音部署踩坑实录:DNS解析超时、UTF-8 BOM导致静音、方言ID混淆——97%开发者忽略的3个关键参数

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs泰米尔语音部署踩坑实录&#xff1a;DNS解析超时、UTF-8 BOM导致静音、方言ID混淆——97%开发者忽略的3个关键参数 DNS解析超时&#xff1a;被忽略的区域路由策略 ElevenLabs 的 API 在印度…...

解放你的文档下载焦虑:一键保存30+平台内容的神器

解放你的文档下载焦虑&#xff1a;一键保存30平台内容的神器 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为了解决您…...