在.net开发中经常需要读写xml形式的文件(app.config和web.config分别是WinForm和WebForm中使 用到的xml文件的一个特列,并且微软提供了通用的方法,在此就不赘述了), .net类库提供了多种读写xml文件的方式,每一种方式都有其优点和缺 点,因而有其实用性。

下面列出微软.net类库提供的读写xml文件个类及其特点:

类名称

优点

缺点

XmlReader

快速、高效、可扩展

只读,只向前,需要人工验证

XmlDocument

可往返、可读写、支持XPath筛选

比XmlReader慢

XPathNavigator

可往返,支持XPath和XSLT

只读

XPathDocument

比XmlDocument,优化支持XPath和XSLT

比XmlReader慢

本文提到的XmlReader也是微软类库中的一个类,它的特点是快速高效,并且可扩展,缺点是只读。

下面举例说明XmlReader的用法:
(一)用到的xml文件:meu.xml

<?xml version="1.0" encoding="utf-8" ?><Menus>  <Menu title="常用网址">    <item name="天下网" url="http://www.netskycn.com" id="1"/>    <item name="天下网生活论坛" url="http://life.netskycn.com" id="2"/>    <item name="csdn" url="http://www.csdn.net" id="3"/>    <item name="我的博客" url="http://blog.csdn.net/zhoufoxcn" id="4"/>    <item name="百度" url="http://www.baidu.com" id="5"/>    <item name="Google" url="http://www.google.cn" id="6"/>    <item name="微软" url="http://www.microsoft.com" id="7"/>  </Menu>  <Menu title="娱乐网址">    <item name="奇虎" url="http://www.qihoo.com" id="12"/>    <item name="网易" url="http://www.163.com" id="13"/>    <item name="天涯" url="http://www.tianya.cn" id="14"/>  </Menu>  <Menu title="安全网址">    <item name="360" url="http://www.safe360.com" id="15"/>    <item name="瑞星" url="http://www.rising.com.cn" id="16"/>    </Menu></Menus>

(二)读取并显示:ReadXml.aspx

<?xml version="1.0" encoding="utf-8" ?><Menus>  <Menu title="常用网址">    <item name="天下网" url="http://www.netskycn.com" id="1"/>    <item name="天下网生活论坛" url="http://life.netskycn.com" id="2"/>    <item name="csdn" url="http://www.csdn.net" id="3"/>    <item name="我的博客" url="http://blog.csdn.net/zhoufoxcn" id="4"/>    <item name="百度" url="http://www.baidu.com" id="5"/>    <item name="Google" url="http://www.google.cn" id="6"/>    <item name="微软" url="http://www.microsoft.com" id="7"/>  </Menu>  <Menu title="娱乐网址">    <item name="奇虎" url="http://www.qihoo.com" id="12"/>    <item name="网易" url="http://www.163.com" id="13"/>    <item name="天涯" url="http://www.tianya.cn" id="14"/>  </Menu>  <Menu title="安全网址">    <item name="360" url="http://www.safe360.com" id="15"/>    <item name="瑞星" url="http://www.rising.com.cn" id="16"/>    </Menu></Menus>(二)读取并显示:ReadXml.aspx<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %><%@ Import Namespace="System.Xml" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>XMLReader实例</title></head><body><script runat="server">protected void Page_Load(Object Src, EventArgs E){  if (!IsPostBack)   {      XmlReader xmlReader = XmlReader.Create(Server.MapPath("Menu.xml"));            while (xmlReader.Read())            {                Response.Write("<li>节点类型:" + xmlReader.NodeType + "==<br>");                switch (xmlReader.NodeType)                {                    case XmlNodeType.XmlDeclaration:                        for (int i = 0; i < xmlReader.AttributeCount; i++)                        {                            xmlReader.MoveToAttribute(i);                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+"&nbsp;");                        }                        break;                    case XmlNodeType.Attribute:                        for (int i = 0; i < xmlReader.AttributeCount; i++)                        {                            xmlReader.MoveToAttribute(i);                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+"&nbsp;");                        }                        break;                    case XmlNodeType.CDATA:                        Response.Write("CDATA:" + xmlReader.Value+"&nbsp;");                        break;                    case XmlNodeType.Element:                        Response.Write("节点名称:" + xmlReader.LocalName+"<br>");                        for (int i = 0; i < xmlReader.AttributeCount; i++)                        {                            xmlReader.MoveToAttribute(i);                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+"&nbsp;");                        }                        break;                    case XmlNodeType.Comment:                        Response.Write("Comment:" + xmlReader.Value);                        break;                    case XmlNodeType.Whitespace:                        Response.Write("Whitespace:" + "&nbsp;");                        break;                    case XmlNodeType.ProcessingInstruction:                        Response.Write("ProcessingInstruction:" + xmlReader.Value);                        break;                    case XmlNodeType.Text:                        Response.Write("Text:" + xmlReader.Value);                        break;                }            }            xmlReader.Close();  }}</script></body></html>

特别说明的是:menu.xml和ReadXml.aspx文件放在同一个文件夹下,如果实际情况与此不符,请根据实际情况更改。

以下是输出结果:

节点类型:XmlDeclaration==属性:version=1.0 属性:encoding=utf-8 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:Menus节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:Menu属性:title=常用网址 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=天下网 属性:url=http://www.netskycn.com 属性:id=1 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=天下网生活论坛 属性:url=http://life.netskycn.com 属性:id=2 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=csdn 属性:url=http://www.csdn.net 属性:id=3 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=我的博客 属性:url=http://blog.csdn.net/zhoufoxcn 属性:id=4 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=百度 属性:url=http://www.baidu.com 属性:id=5 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=Google 属性:url=http://www.google.cn 属性:id=6 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=微软 属性:url=http://www.microsoft.com 属性:id=7 节点类型:Whitespace==Whitespace: 节点类型:EndElement==节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:Menu属性:title=娱乐网址 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=奇虎 属性:url=http://www.qihoo.com 属性:id=12 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=网易 属性:url=http://www.163.com 属性:id=13 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=天涯 属性:url=http://www.tianya.cn 属性:id=14 节点类型:Whitespace==Whitespace: 节点类型:EndElement==节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:Menu属性:title=安全网址 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=360 属性:url=http://www.safe360.com 属性:id=15 节点类型:Whitespace==Whitespace: 节点类型:Element==节点名称:item属性:name=瑞星 属性:url=http://www.rising.com.cn 属性:id=16 节点类型:Whitespace==Whitespace: 节点类型:EndElement==节点类型:Whitespace==Whitespace: 节点类型:EndElement==

更多相关文章

  1. 详解XML命名空间(XML Namespaces)介绍以及节点读取方法的示例代码
  2. xml创建根节点、子节点的示例代码分享
  3. XML开发基础-XML属性的代码详解
  4. xml的属性总结代码详情
  5. 简单介绍XML Schema中的elementFormDefault属性
  6. jscript和vbscript对XML元素属性进行操作的方法
  7. java通过XPath解析xml节点的代码详解
  8. 分享一个jscript与vbscript操作XML元素属性的方法
  9. 有关xml节点的文章推荐10篇

随机推荐

  1. Android实践手册:该如何应用Android知识到
  2. Ubuntu14.04下最新Android(安卓)NDK安装
  3. Android(安卓)中 Bitmap 和 Drawable 相
  4. 安卓开发一步到位
  5. 读取Android联系人列表
  6. 独立android开发者开发app如何盈利
  7. android安卓手机分屏多窗口实现方法
  8. android 反编译工具
  9. Android 多线程编程:IntentService & Hand
  10. 7款Android开发者常用的Android UI组件