用C#读取XML文档
本文将以一个非常简单的例子来说明如何使用C#访问一个XML文件并且读取其中的信息。例子本身并无任何实际意义,它只是简单的介绍了如何调用微软的XML标准以及如何运用到实际当中去。希望能够对初次接触C#或者未尝试过通过C#读取XML文件的读者有所启发。本文旨在抛砖引玉,希望能与更多的朋友交流和分享经验。
制作过程
1.
运行Visual Studio.NET,新建Visual C#.NET工程,这里取名为ReadXML。
2.
在解决方案资源管理器中,将Form1.cs改名为frmAuthor.cs(此项为可选)。
<script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>
3.
将Form1的Name属性改为frmAuthor,Text属性改为Read XML Document,Font改为Verdana,9pt(此项为可选)。
4.
在窗体上添加四个控件:Lable控件(Name: lbl、Text: Author Name:)、ComboBox控件(Name: cboAuthor、DropDownStyle: DropDownList)、RichTextBox控件(Name: richtxt、Text:空)、Button控件(Name: btnShow、Text: Show Author’s Info)。调整各控件的位置,此时用户界面类似于下图:
5.
双击窗体,则IDE自动切换到代码编辑窗口,并自动添加了窗体载入方法frmAuthor_Load。在该方法内加入如下代码:
this.cboAuthor.Items.Add("张爱铃"); this.cboAuthor.Items.Add("福楼拜"); this.cboAuthor.Items.Add("马克·吐温");
以上代码添加几条作者名字到ComboBox中去,这些作者的信息在XML文档中有对应项。
OK,到这里为止,我们所要做的一些程序初始化工作就已经完毕了。下面让我们来看看本例程所要展示的主要知识点。
在编写访问代码之前,让我们来看看XML文档的内容,如下:
<?xml version="1.0" encoding="gb2312" ?> <Author><Zhang><Intro>省略</Intro> </Zhang><Fu><Intro>省略</Intro> </Fu><Mark><Intro>省略</Intro> </Mark></Author>
这是一个简单的XML文档,每个作者对应一条信息(Intro),共三条信息。我们要做的事情就是通过程序、按照XML文档的结构读取作者的简介,也就是Intro部分的内容。OK,下面就让我们来实现具体的代码。
1.
将以上XML文档(取名为Author.xml)放置在工程的根目录下(事实上放在任何地方均可以,但为了便于管理,这里就直接放在工程根目录下)。然后回到VS.NET,在frmAuthor.cs代码中头部添加以下代码:
using System.Xml;
用于引用微软System.Xml命名空间。
2.
回到frmAuthor.cs[设计]页,双击Show Author’s Info按钮,则IDE自动添加btnShow_Click事件在frmAuthor.cs里。在btnShow_Click事件中,填写以下代码:
try { //Declaration string strAuthor = this.cboAuthor.Text.Trim(); string strXMLAuthor = ""; string strInfo; XmlDocument doc = new XmlDocument(); System.Xml.XPath.XPathNavigator nav; // = new System.Xml.XPath.XPathNavigator(); System.Xml.XPath.XPathNodeIterator iterator; // = new System.Xml.XPath.XPathNodeIterator();//Validation if( strAuthor == "") { throw new ArgumentException("Author","You must select a author name!"); }//Load XML document doc.Load("..\\..\\Author.xml");//Set nav object nav = ((System.Xml.XPath.IXPathNavigable)(doc)).CreateNavigator();//Justification if( strAuthor == "张爱铃" ) strXMLAuthor = "Zhang"; else if( strAuthor == "福楼拜" ) strXMLAuthor = "Fu"; else if( strAuthor == "马克·吐温" ) strXMLAuthor = "Mark";//Set node iterator iterator = nav.Select("Author/" + strXMLAuthor);//Move to the desired node iterator.MoveNext();//Get the value of current node strInfo = iterator.Current.Value;//Display author's information this.richtxt.Text = strInfo; } catch(System.Exception err) { //Display Error MessageBox.Show(err.Message, "ERROR!"); }
3.
主要代码我们已经填写完毕。下面使用菜单“生成”>“生成解决方案”命令后,按F5即可运行测试程序是否正确了。
解释部分
1.
System.Xml命名空间
System.Xml 命名空间为处理 XML 提供基于标准的支持。支持的标准包括:
<script language="JavaScript" src="http://book.book560.com/ads/ads728x15.js" type="text/javascript"></script>
•
XML 1.0 - http://www.w3.org/TR/1998/REC-xml-19980210 - 包括 DTD 支持。
•
XML 命名空间 - http://www.w3.org/TR/REC-xml-names/ - 流级别和 DOM。
•
XSD 架构 - http://www.w3.org/2001/XMLSchema
•
XPath 表达式 - http://www.w3.org/TR/xpath
•
XSLT 转换 - http://www.w3.org/TR/xslt
•
DOM 级别 1 核心 - http://www.w3.org/TR/REC-DOM-Level-1/
•
DOM 级别 2 核心 - http://www.w3.org/TR/DOM-Level-2/
2.
XPathNavigator类
XPathNavigator 是基于 XPath 数据模型,并且提供了在任何数据存储区上实现 XPath 查询所需的方法。
XPathNavigator 提供对数据的只读随机访问。当前节点是指导航器定位在其上的节点。使用任何移动方法都可推进导航器并且属性反映当前节点的值。
3.
XPathNodeIterator 类
XPathNodeIterator 类是指在一组选定的节点上提供迭代程序。Iteractor一词源于Iterate(反复说, 重申, 重述),它会在选定的节点上进行迭代搜索,在我们的例子中,它会寻找符合条件的节点,并获得该节点上的值。
关于System.Xml命名空间及其子命名空间,可以查阅2002年后的MSDN Library,其中的“命名空间层次结构”一节中,我们可以清楚地看到各System.Xml命名空间的层次结构。
以上通过一个非常简单的例子来向大家展示如何利用C#及System.Xml命名空间直接访问一个XML文档。当然,本例程中的代码只是一种实现方法,代码也未经过整理和优化,这里只是希望能够通过这个例程给大家展示Visual C#的一个知识点而已
用C#读取XML文档相关推荐
- Qt 读取XML文档的简单示例
目录名字 XML简介 Qt 操作XML文档一般方法 使用DOM读取XML文档 示例代码:读取XML文档 XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种 ...
- 【Qt】DOM读取XML文档
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. XML文档示例 04. DOM读取XML文档内容 05. 预留 06. 附录 01. 概述 DOM(Document Ob ...
- [Qt教程] 第27篇 XML(一)使用DOM读取XML文档
[Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主 发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...
- C#来创建和读取XML文档 [转]
C#来创建和读取XML文档 [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...
- 读取XML文档解析信息
dom4j是一个Java的XML API,用来读写XML文件.dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.使用dom4j ...
- C#来创建和读取XML文档
扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的.做为用于替代HTML语言的一种新型的标记语言, XML内部有着很多基本标准,XML就是通过与这些相关标 ...
- Java案例:读取XML文档
文章目录 一.XML概述 二.案例演示--读取XML (一)运行结果 (二)涉及知识点 (三)实现步骤 1.创建Java项目[ReadXML] 2.在项目根目录里创建XML文档 3.创建ReadXML ...
- matlab读取xml文档并储存为.mat文件详解
起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递. xml文档结构如下: <opencv_storag ...
- AS3读取XML文档
我用的开发工具是:Flash Professional CS5.5 新建一个AS3项目,保存fla文件为:f1.fla,另新建一个as3文件,文件名:Main.as,代码如下: package {im ...
最新文章
- 057 Insert Interval 插入区间
- 数字图像处理:第二十章 视频编码与压缩
- Chrome开发者工具一个有用的快捷键组合:Ctrl+Shift+E
- java 匿名对象有引用,封闭对象的引用通过匿名类java进行转义
- 机器学习--弹性网络(Elastic-Net Regression)
- java xml annotation_Annotation与XML配置ID生成策略
- 获取android手机基本信息
- 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
- 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(六)——放大器的频率特性
- 卷积神经网络原理简述
- python英文词频统计软件_英语词频统计软件功能介绍
- 一文看懂马尔科夫过程
- “非功能需求”属于模糊术语吗
- Chtholly Nota Seniorious
- 趣店探探等30款APP违规收集个人信息被通报
- 从希望中寻找失望——计算机达人成长之路(8)连载
- 如何成功实现“从经理到总监”的跨越?
- 网络安全问题游戏_游戏化如何改变网络安全行业
- 2021首届-西部云安全峰会来了!9月26日西安见
- 金融支付清算系统术语大全(中英文对照)
热门文章
- 糖果传递(信息学奥赛一本通-T1432)
- 浮点数向零舍入(信息学奥赛一本通-T1019)
- 17 WM配置-策略-激活存储区搜索(Storage Section Search)
- 58 SD配置-科目分配-定义科目代码
- Protobuf介绍及简单使用(下)之文件读写
- (OPN)Onion Peel Networks for Deep Video Completion
- np.stack()函数详解 ==>堆叠 【类似于torch.stack()】
- java sheet_java的poi技术写Excel的Sheet
- @excel 注解_Java中注解学习系列教程-3
- 关于'$ router' 的 undefined问题 ,是不是很痛点?!