当前位置: 首页 > 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;将玩…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...