简介C#读取XML的两种方式

XML作用

对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式。用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方!

我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML。下面我们来了解一下使用程序访问XML的一些基础理论知识。

访问的两种模型:

在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题。流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。虽然是各有千秋,但我们也可以在程序中两者并用实现优劣互补嘛,呵呵

一、DOM文档对象模型操作

代码如下:

using System.Xml;

XmlDocument xml=new XmlDocument();//初始化一个xml实例
xml.Load(path);//导入指定xml文件
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));XmlNode root=xml.SelectSingleNode("/root");//指定一个节点
XmlNodeList childlist=root.ChildNodes;//获取节点下所有直接子节点
XmlNodeList nodelist=xml.SelectNodes("/Root/News");//获取同名同级节点集合string id=node.Attributes["id"].Value;//获取指定节点的指定属性值
string content=node.InnerText;//获取指定节点中的文本
root.HasChildNodes;//判断该节点下是否有子节点

1.XmlDocument类的属性

XmlDocument类的属性及说明如下表所示。




























































































属性

说明

Attributes

当前节点的属性集合

BaseURI

当前节点的基URI

ChildNodes

节点的所有子节点

DocumentElement

文档的根

DocumentType

DOCTYPE 声明的节点

FirstChild

节点的第一个子节点

HasChildNodes

是否有任何子节点

Implementation

获取当前文档的 XmlImplementation对象

InnerText

节点包含的所有文本内容

InnerXml

节点所包含的所有XML内容

IsReadOnly

当前节点是否是只读的

Item

获取指定的子元素

LastChild

最后一个子节点

LocalName

获取节点的本地名称

Name

获取节点的限定名

NamespaceURI

获取该节点的命名空间 URI

NameTable

获取与此实现关联的 XmlNameTable

NextSibling

获取紧接在该节点之后的节点

NodeType

获取当前节点的类型

OuterXml

获取表示此节点及其所有子节点的标记

OwnerDocument

获取当前节点所属的 XmlDocument

ParentNode

获取该节点(对于可以具有父级的节点)的父级

Prefix

获取或设置该节点的命名空间前缀

PreserveWhitespace

获取或设置一个值,该值指示是否在元素内容中保留空白

PreviousSibling

获取紧接在该节点之前的节点

SchemaInfo

返回节点的后架构验证信息集 (PSVI)

Schemas

获取或设置与此 XmlDocument 关联的 XmlSchemaSet 对象

Value

获取或设置节点的值

XmlResolver

设置 XmlResolver 以用于解析外部资源

2.XmlDocument类的方法

XmlDocument类的方法及说明如下表所示。























































































































方法

说明

AppendChild

将指定的节点添加到该节点的子节点列表的末尾

CreateAttribute

创建具有指定名称的 XmlAttribute

CreateCDataSection

创建包含指定数据的 XmlCDataSection

CreateComment

创建包含指定数据的 XmlComment

CreateDocumentFragment

创建 XmlDocumentFragment

CreateDocumentType

返回新的 XmlDocumentType 对象

CreateElement

创建 XmlElement

CreateEntityReference

创建具有指定名称的 XmlEntityReference

CreateNavigator

创建一个用于导航此文档的新 XPathNavigator 对象

CreateNode

创建 XmlNode

CreateProcessingInstruction

创建一个具有指定名称和数据的 XmlProcessingInstruction

CreateSignificantWhitespace

创建一个 XmlSignificantWhitespace 节点

CreateTextNode

创建具有指定文本的 XmlText

CreateWhitespace

创建一个 XmlWhitespace 节点

CreateXmlDeclaration

创建一个具有指定值的 XmlDeclaration 节点

GetElementById

获取具有指定 ID 的 XmlElement

GetElementsByTagName

返回一个 XmlNodeList ,它包含与指定名称匹配的所有元素的列表

GetNamespaceOfPrefix

查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI

GetPrefixOfNamespace

查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀

GetType

获取当前实例的 Type

ImportNode

将节点从另一个文档导入到当前文档

InsertAfter

将指定的节点紧接着插入指定的引用节点之后

InsertBefore

将指定的节点紧接着插入指定的引用节点之前

Load

加载指定的 XML 数据

LoadXml

从指定的字符串加载 XML 文档

Normalize

将XmlText 节点都转换成“正常”形式

PrependChild

将指定的节点添加到该节点的子节点列表的开头

ReadNode

根据 XmlReader 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上

RemoveAll

移除当前节点的所有子节点和/或属性

RemoveChild

移除指定的子节点

ReplaceChild

用新节点替换旧节点

Save

将 XML 文档保存到指定的位置

SelectNodes

选择匹配XPath 表达式的节点列表

SelectSingleNode

选择匹配 XPath 表达式的第一个 XmlNode

Supports

测试 DOM 实现是否实现特定的功能

Validate

验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言 (XSD) 架构。

WriteContentTo

将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中

WriteTo

将 XmlDocument 节点保存到指定的 XmlWriter

下面对常用的方法进行介绍。

(1)Load方法

该方法可以从一个字符串指定的XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。

(2)LoadXml方法

该方法完成从一个特定的XML文件导入XML数据的功能。默认情况下,LoadXml 方法既不保留空白,也不保留有意义的空白。此方法不执行 DTD 或架构验证。

(3)Save方法

该方法将XML数据保存到一个XML文件或是一个流对象、一个TextReader对象、一个XmlReader对象导入XML数据。

3.XmlDocument类的事件

XmlDocument类的事件及说明如下表所示。

表   XmlDocument类的事件及说明























事件

说明

NodeChanged

当属于该文档的节点的 Value已被更改时发生

NodeChanging

当属于该文档的节点的 Value 将被更改时发生

NodeInserted

当属于该文档的节点已被插入另一个节点时发生

NodeInserting

当属于该文档的节点将被插入另一个节点时发生

NodeRemoved

当属于该文档的节点已被从其父级移除时发生

NodeRemoving

当属于该文档的节点将被从文档中移除时发生

http://kb.cnblogs.com/page/42226/

(0)

相关推荐

  • C#读取xml节点数据方法小结

    本文实例总结了C#读取xml节点数据的方法.分享给大家供大家参考.具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSettings> <add key="orgCodePath" value="../../template/home/orgCode.xml"/> </appSettings> XML结构如下: <?xml version="1.

  • c# winform读取xml文件创建菜单的代码

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using WinformMenu.Helper;using System.Xml; namespace WinformMen

  • c#通过xpath读取xml示例

    需要修改Main方法第一行代码的路径为你的books.xml文件绝对路径或相对路径.代码演示了XPath各种语法的使用情况 books.xml 复制代码 代码如下: <?xml version="1.0" encoding="ISO-8859-1"?><bookstore> <book category="COOKING">    <title lang="en">Everyda

  • 基于C#中XmlReader读取Xml的深入分析

    XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存,而在有些场景下我们必须考虑尽可能节省内存.这时候就该XmlReader和XmlWriter出场了.XmlReader读取Xml需要通过Read()实例方法,不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束,Read()方法返回false.如下读取Xml内容实例代码和注释说明 复制代码 代码如下: using System; using Sys

  • C#读取XML中元素和属性值的实现代码

    1.school.xml,如下: 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?><!--启明培训学校学生信息:    1.一年级学生    2.二年级学生    -->  <school name="启明培训学校">    <grades>     <grade id="1" name="一年级">

  • 在C#中创建和读取XML文件的实现方法

    1.创建简单的XML文件为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml; namespace CreateXml{    class Program    {        static void Main(string[]

  • c#读取XML多级子节点

    话不多说,请看代码: string xmlFilePath = "D:\\log_xml\\MarInfo.xml"; //Server.MapPath(@"相对路径如/xml/test.xml"); XmlDocument doc = new XmlDocument(); doc.Load(xmlFilePath);//加载XML文件 string rst = ""; //使用xpath表达式选择文档中所有的student子节点 XmlNode

  • C# Linq读取XML文件的实例

    1.示例XML文件:Demo.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><note>  <conf>    <to>infozero</to>    <from>lerroy</from>    <heading>测试信息</heading>    <body>第一条测试信息<

  • c#读取xml文件到datagridview实例

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Xml;using System.Xml.Linq; namespa

  • 简介C#读取XML的两种方式

    XML作用 对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式.用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方! 我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML.下面我们来了解一下使用程序访问XML的一些基础理论知识. 访问的两种模型: 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,

  • 用PHP编写和读取XML的几种方式

    一.使用DOM生成和读取XML文件 实例一: 复制代码 代码如下: <?php //Creates XML string and XML document using the DOM $dom = new DomDocument('1.0'); //add root - <books> $books = $dom->appendChild($dom->createElement_x_x ('books')); //add <book> element to <

  • C#复杂XML反序列化为实体对象两种方式小结

    目录 前言 需要操作的Xml数据 一.通过是手写的方式去定义Xml的实体对象模型类 二.通过Visual Studio自带的生成Xml实体对象模型类 1.首先Ctrl+C复制你需要生成的Xml文档内容 2.找到编辑=>选择性粘贴=>将Xml粘贴为类 3.以下是使用VS自动生成的Xml类 验证两个Xml类是否能够反序列化成功 C# XML基础入门(XML文件内容增删改查清) C#XmlHelper帮助类操作Xml文档的通用方法汇总 .NET中XML序列化和反序列化常用类和用来控制XML序列化的属

  • Go语言读取YAML 配置文件的两种方式分享

    目录 前言 yaml.v3 包 读取 yaml 文件 viper 包 读取 yaml 文件 小结 前言 在日常开发中,YAML 格式的文件基本上被默认为是配置文件,其内容因为缩进带来的层级感看起来非常直观和整洁.本文将会对 YAML 内容的读取进行介绍. yaml.v3 包 yaml.v3 的包,可以让我们在 Go 里面轻松地操作 yaml 格式的数据(如将 yaml 格式转成结构体等).在使用 yaml.v3 包之前,我们需要先安装它: go get gopkg.in/yaml.v3 读取 y

  • MyBatis关闭一级缓存的两种方式(分注解和xml两种方式)

    目录 问题:为什么有缓存 什么场景下必须需要关闭一级缓存 关闭一级缓存方法(针对使用MyBatis场景) 第一种:xml形式(关闭所有一级缓存) 第二种:注解形式(可指定仅仅某个Mapper关闭注解) 第三种:sql动态拼接传入的随机数 问题:为什么有缓存 mybatis默认开启一级缓存 什么场景下必须需要关闭一级缓存 场景:执行2次相同sql,但是第一次查询sql结果会加工处理,比如解析铭文,或者反编译加密解密用户名/密码字符串等等,如果不关闭一级缓存,等第二次再查询相同sql时不会去数据库表

  • 深入解读Python解析XML的几种方式

    在XML解析方面,Python贯彻了自己"开箱即用"(batteries included)的原则.在自带的标准库中,Python提供了大量可以用于处理XML语言的包和工具,数量之多,甚至让Python编程新手无从选择. 本文将介绍深入解读利用Python语言解析XML文件的几种方式,并以笔者推荐使用的ElementTree模块为例,演示具体使用方法和场景.文中所使用的Python版本为2.7. 一.什么是XML? XML是可扩展标记语言(Extensible Markup Langu

  • mybatis中批量插入的两种方式(高效插入)

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

  • Spring加载properties文件的两种方式实例详解

    在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加方便.在Spring中也可以这么做,而且Spring有两种加载properties文件的方式:基于xml方式和基于注解方式.下面分别讨论下这两种方式. 1. 通过xml方式加载properties文件 我们以Spring实例化dataSource为例,我们一般会在beans

  • Hibernate中获取Session的两种方式代码示例

    Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关. Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式. 日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便跟踪数据库的动态.那么一个用户在向数据库插入一条记录的时候,就要向日志文件中记录一条记录,用户的一系列操作都要在

  • Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合MongoDB的两种方法:MongoRepository和MongoTemplate. 代码结构如下: 2 项目准备 2.1 启动MongoDB实例 为了方便,使用Docker来启动MongoDB,详细指导文档请参考:基于Docker的MongoDB实现授权访问的方法,这里不再赘述. 2.2 引入相关依赖

随机推荐