本文将以一个非常简单的例子来说明如何使用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文档相关推荐

  1. Qt 读取XML文档的简单示例

    目录名字 XML简介 Qt 操作XML文档一般方法 使用DOM读取XML文档 示例代码:读取XML文档 XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种 ...

  2. 【Qt】DOM读取XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. XML文档示例 04. DOM读取XML文档内容 05. 预留 06. 附录 01. 概述 DOM(Document Ob ...

  3. [Qt教程] 第27篇 XML(一)使用DOM读取XML文档

    [Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主  发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...

  4. C#来创建和读取XML文档 [转]

    C#来创建和读取XML文档  [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...

  5. 读取XML文档解析信息

    dom4j是一个Java的XML API,用来读写XML文件.dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.使用dom4j ...

  6. C#来创建和读取XML文档

    扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的.做为用于替代HTML语言的一种新型的标记语言, XML内部有着很多基本标准,XML就是通过与这些相关标 ...

  7. Java案例:读取XML文档

    文章目录 一.XML概述 二.案例演示--读取XML (一)运行结果 (二)涉及知识点 (三)实现步骤 1.创建Java项目[ReadXML] 2.在项目根目录里创建XML文档 3.创建ReadXML ...

  8. matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递. xml文档结构如下: <opencv_storag ...

  9. AS3读取XML文档

    我用的开发工具是:Flash Professional CS5.5 新建一个AS3项目,保存fla文件为:f1.fla,另新建一个as3文件,文件名:Main.as,代码如下: package {im ...

最新文章

  1. 057 Insert Interval 插入区间
  2. 数字图像处理:第二十章 视频编码与压缩
  3. Chrome开发者工具一个有用的快捷键组合:Ctrl+Shift+E
  4. java 匿名对象有引用,封闭对象的引用通过匿名类java进行转义
  5. 机器学习--弹性网络(Elastic-Net Regression)
  6. java xml annotation_Annotation与XML配置ID生成策略
  7. 获取android手机基本信息
  8. 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
  9. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(六)——放大器的频率特性
  10. 卷积神经网络原理简述
  11. python英文词频统计软件_英语词频统计软件功能介绍
  12. 一文看懂马尔科夫过程
  13. “非功能需求”属于模糊术语吗
  14. Chtholly Nota Seniorious
  15. 趣店探探等30款APP违规收集个人信息被通报
  16. 从希望中寻找失望——计算机达人成长之路(8)连载
  17. 如何成功实现“从经理到总监”的跨越?
  18. 网络安全问题游戏_游戏化如何改变网络安全行业
  19. 2021首届-西部云安全峰会来了!9月26日西安见
  20. 金融支付清算系统术语大全(中英文对照)

热门文章

  1. 糖果传递(信息学奥赛一本通-T1432)
  2. 浮点数向零舍入(信息学奥赛一本通-T1019)
  3. 17 WM配置-策略-激活存储区搜索(Storage Section Search)
  4. 58 SD配置-科目分配-定义科目代码
  5. Protobuf介绍及简单使用(下)之文件读写
  6. (OPN)Onion Peel Networks for Deep Video Completion
  7. np.stack()函数详解 ==>堆叠 【类似于torch.stack()】
  8. java sheet_java的poi技术写Excel的Sheet
  9. @excel 注解_Java中注解学习系列教程-3
  10. 关于'$ router' 的 undefined问题 ,是不是很痛点?!