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.生成效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

证明之黄金分割比的无理性

黄金分割比的无理性 “黄金分割比的神奇之处&#xff1a;视觉化证明与数学的魅力” 人们在学习高等数学时&#xff0c;走到一个证明的结尾处&#xff0c;通常会经历这样的思考&#xff1a;“我理解每一行是怎样由前一行得到的&#xff0c;但是我却不明白为什么这个定理是正确…

【北邮鲁鹏老师计算机视觉课程笔记】01 introduction

1 生活中的计算机视觉 生活中的各种计算机视觉识别系统已经广泛地应用起来了。 2 计算机视觉与其他学科的关系 认知科学和神经科学是研究人类视觉系统的&#xff0c;如果能把人类视觉系统学习得更好&#xff0c;可以迁移到计算机视觉。是计算机视觉的理论基础。 算法、系统、框…

Sodinokibi(REvil)勒索病毒最新变种,攻击Linux平台

前言 国外安全研究人员爆光了一个Linux平台上疑似Sodinokibi勒索病毒家族最新样本&#xff0c;如下所示&#xff1a; Sodinokibi(REvil)勒索病毒的详细分析以及资料可以参考笔者之前的一些文章&#xff0c;这款勒索病毒黑客组织此前一直以Windows平台为主要的攻击目标&#xf…

c语言--指针运算

目录 一、指针-整数二、指针-指针2.1条件2.2两个指针指向同一块空间代码2.2.1运行结果 2.3两个指针指向不同块空间代码2.3.1运行结果 2.4总结 三、指针的关系运算3.1代码3.1.1运行结果3.1.2分析 一、指针整数 用数组举例&#xff1a; 因为数组在内存中是连续存放的&#xff0c…

Git版本与分支

目录 一、Git 二、配置SSH 1.什么是SSH Key 2.配置SSH Key 三、分支 1.为什么要使用分支 2.四个环境及特点 3.实践操作 1.创建分支 2.查看分支 3.切换分支 4.合并分支 5.删除分支 6.重命名分支 7.推送远程分支 8.拉取远程分支 9.克隆指定分支 四、版本 1.什…

IOS破解软件安装教程

对于很多iOS用户而言&#xff0c;获取软件的途径显得较为单一&#xff0c;必须通过App Store进行下载安装。 这样的限制&#xff0c;时常让人羡慕安卓系统那些自由下载各类版本软件的便捷。 心中不禁生出疑问&#xff1a;难道iOS世界里&#xff0c;就不存在所谓的“破解版”软件…

【机房预约系统(C++版)】

一、机房预约系统需求 1.1、系统简介 学校现有几个规格不同的机房&#xff0c;由于使用时经常出现“撞车“现象,现开发一套机房预约系统&#xff0c;解决这一问题。 1.2、身份简介 分别有三种身份使用该程序学生代表:申请使用机房教师:审核学生的预约申请管理员:给学生、教…

【Java八股面试系列】并发编程-并发关键字,线程池

目录 并发关键字 Synchronized synchronized最主要的三种使用方式&#xff1a; 具体使用&#xff1a;双重校验锁单例模式 synchronized 底层实现原理&#xff1f; synchronized锁的优化 偏向锁 轻量级锁 重量级锁 Mark Word 与 Monitor 之间的关系 总结 偏向锁、轻量…

蓝桥杯刷题day08——完全日期

1、题目描述 如果一个日期中年月日的各位数字之和是完全平方数&#xff0c;则称为一个完全日期。 例如&#xff1a;2021年6月5日的各位数字之和为20216516&#xff0c;而16是一个完全平方数&#xff0c;它是4的平方。所以2021年6月5日是一个完全日期。 请问&#xff0c;从200…

操作系统(13)-----文件管理

目录 一.内存映射文件 传统的文件访问方式&#xff1a; 内存映射文件&#xff1a; 内存映射文件与传统文件访问方式的区别&#xff1a; 文件共享的实现&#xff1a; 内存映射文件的优点&#xff1a; 二.文件的属性 三.文件的逻辑结构 1.无结构文件 2.有结构文件 四.…

书生·浦语大模型全链路开源体系

参考&#xff1a;https://www.bilibili.com/video/BV1Rc411b7ns/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1 背景&#xff1a; 人工智能的发展从针对特定任务&#xff0c;用一个模型解决一个问题过渡到一个模型来应对多模态、多任务&#xff0c;大模…

门诊单据打印用什么软件,线下处方单生成系统教程

门诊单据打印用什么软件&#xff0c;线下处方单生成系统教程 一、前言 以下软件教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 如上图&#xff0c;电子处方或病历记录开单生成保存后&#xff0c;可…

【数学建模】【2024年】【第40届】【MCM/ICM】【A题 七鳃鳗性别比与资源可用性】【解题思路】

我们通过将近半天的搜索数据&#xff0c;查到了美国五大湖中优势物种的食物网数据&#xff0c;以Eric伊利湖为例&#xff0c;共包含34各优势物种&#xff0c;相互之间的关系如下图所示&#xff1a; 一、题目 &#xff08;一&#xff09; 赛题原文 2024 MCM Problem A: Reso…

推荐几个Python爬虫接单渠道

前言 平时工作有闲的家人们&#xff0c;今天给大家推荐一些用Python爬虫做私活的渠道&#xff01; 【Python爬虫学习资料】 先给各位还不熟悉Python爬虫的朋友介绍一下&#xff01; 可以短时间获得大量资料~ 可以进一步数据分析 当然也可以获得收益&#xff01; 学会Python…

第十七篇【传奇开心果系列】Python的OpenCV库技术点案例示例:自适应阈值二值化处理图像提取文字

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文目录前言一、自适应阈值二值化处理图像提取文字轮廓的初步示例代码:二、扩展思路介绍三、调整自适应阈值二值化的参数示例代码四、对二值化图像进行形态学操作示例代码五、使用轮廓特征进行筛选示…

113.路径总和 II

给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

【开源】JAVA+Vue+SpringBoot实现实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

RocketMQ客户端实现多种功能

目录 RocketMQ客户端基本流程 消息确认机制 1、消息生产端采用消息确认加多次重试的机制保证消息正常发送到RocketMQ 单向发送 同步发送 异步发送 2、消息消费者端采用状态确认机制保证消费者一定能正常处理对应的消息 3、消费者也可以自行指定起始消费位点 广播消息 …

【Web】基于Mybatis的SQL注入漏洞利用点学习笔记

目录 MyBatis传参占位符区别 不能直接用#{}的情况 in多参数值查询 like %%模糊查询 order by列名参数化 MyBatis传参占位符区别 在 MyBatis 中&#xff0c;#{} 和 ${} 都是用于传参的占位符&#xff0c;但它们之间有很大的区别&#xff0c;主要体现在两个方面&#xff1a…

并发容器+并发队列【ConcurentHashMap、CopyOnWriteArrayList、阻塞队列、ArrayBlockingQueue】

并发容器 什么是并发容器?同步容器:并发容器: ConcurrentHashMap结构图JDK1.7结构图JDK1.8结构图 CopyOnWriteArrayList实现原理 并发队列阻塞队列ArrayBlockingQueue 转自极客时间 什么是并发容器? 在JUC包中&#xff0c;有一大部分是关于并发容器的&#xff0c;如Concurr…