用C#读取XML文档

本文将以一个非常简单的例子来说明如何使用C#访问一个XML文件并且读取其中的信息。例子本身并无任何实际意义,它只是简单的介绍了如何调用微软的XML标准以及如何运用到实际当中去。希望能够对初次接触C#或者未尝试过通过C#读取XML文件的读者有所启发。本文旨在抛砖引玉,希望能与更多的朋友交流和分享经验。
    制作过程

1. 运行Visual Studio.NET,新建Visual C#.NET工程,这里取名为ReadXML。
2. 在解决方案资源管理器中,将Form1.cs改名为frmAuthor.cs(此项为可选)。
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 提供基于标准的支持。支持的标准包括:

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#的一个知识点而已,希望能有更多的朋友提供更好的意见和建议。

时间: 2024-11-06 15:40:34

用C#读取XML文档的相关文章

Dom4j读取xml文档

package gz.itcast.a_dom4j_read; import java.io.File; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; /** * 第一个Dom4j读取xml文档的例子 * @author APPle * */ public class Demo1 { public static void main(String[] arg

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = DocumentHelper.parseText(xmlStr); // XML转字符串 Document document = ...; String text = document.asXML(); //这里的XML DOCUMENT为org.dom4j.Document 二.读取XML文档节点: pack

Java获取XML节点总结之读取XML文档节点

dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www.dom4j.org/dom4j-1.6.1/github下载:http://dom4j.github.io/下载解压之后如图所示: 我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了. 下面就以Eclipse创建java项目的构建方法为例说明:声明:本Java项目的开发环境J

dom4j读取xml文档,通过JDBC写入数据库

最近一段时间,每天上班都把时间用在看文档上,动手写代码的比重大大减少.今天无意中看到公司的一个面试题,顺手拿过来做了一下,简单的几个类没想到竟然用了将近一下午的时间,其间还得不断地依靠google,最后的插入sql甚至只写了关键词insert 漏掉了into.常时间不写,手生的可怕.以后要随时看随时记随时写. 记一下基本的知识点. 读取文档monthTotalData.xml 1 <?xml version="1.0" encoding="UTF-8"?>

Java 使用 dom4j 读取 xml文档 demo

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://www.example.org/web-app_2_5" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.example.org/web-a

xml文档的读取

xml文档有写入,当然就有读取了,在这里还是简单介绍一个读取的方法,就是利用XMLTextReader读取xml文档. XmlReader是一种快速.无缓冲,向前并只读的游标,用于读取xml文档,并且隐藏了底层数据交换的复杂性,XMLReader最主要的一个就是他更易使用,其次性能更高,难度更低. 1 public string ReadXml(string path) 2 { 3 //由于要进行大量的字符串的拼接,所以先创建StringBuilder对象 4 StringBuilder sb

详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxen 官网下载页面: http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/ 也可以在网盘上面下载:http://yunpan.cn/cwaNde7UYN83d  提取码 e247 1 完成多条Emp信息的XML描述 1.1 问

python+selenium自动化软件测试(第12章):Python读写XML文档

XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> 标签可以有属性: <aa id=’123’></aa> 标签对可以嵌入数据: <aa>abc</aa>Python对XML文档读写常用有几个模块: (1) xml.etree.ElementTree ElementTree就像一个轻量级的DOM,具有方便友好的A

javaweb dom4j解析xml文档

1.什么是dom4j dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它.在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能.功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的.如今可以看到越