先写一个xml文件:

 <?xml version="1.0" encoding="utf-8" ?>
<bookste>
<!--记录书本的信息-->
<book Type="必修课" ISBN="7-111-19149-2">
<title>编译原理</title>
<auth>佚名</auth>
<price>30.00</price>
</book> <book Type="选修课" ISBN="7-111-19149-1">
<title>计算机操作系统</title>
<auth>test</auth>
<price>28.00</price>
</book>
</bookste>

1.使用XmlDocument

使用XmlDocument来读取XML文件.在XML文件中,我们可以把XML看作是由文档声明(Declare),元素 (Element),属性(Attribute),文本(Text)等构成的一个树.最开始的一个结点叫作根结点,每个结点都可以有自己的子结点.得到一 个结点后,可以通过一系列属性或方法得到这个结点的值或其它的一些属性.例如:

   1: xn 代表一个结点
   2: xn.Name;//这个结点的名称
   3: xn.Value;//这个结点的值
   4: xn.ChildNodes;//这个结点的所有子结点
   5: xn.ParentNode;//这个结点的父结点,等等...
 1.1 读取所有的数据.
使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件. : XmlDocument doc = new XmlDocument();
: doc.Load(@"..\..\Book.xml"); 然后可以通过调用SelectSingleNode得到指定的结点,通过GetAttribute得到具体的属性值.参看下面的代码 // 得到根节点bookste XmlNode xn = xmlDoc.SelectSingleNode("bookste"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; feach (XmlNode xn1 in xnl) { BookModel bookModel = new BookModel(); // 将节点转换为元素,便于得到节点的属性值 XmlElement xe = (XmlElement)xn1; // 得到ISBN两个属性的属性值 var isnb = xe.GetAttribute("ISBN").ToString(); // 得到Book节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; var name=xnl0.Item().InnerText;
}


在正常情况下,上面的代码好像没有什么问题,但是对于读取上面的XML文件,则会出错,原因就是上面的XML文件里面有注释,在没有特别说明的情况下,会默认它也是一个结点(Node).所以在把结点转换成元素的时候就会报错."无法将类型为“System.Xml.XmlComment”的对象强制转换为类型 “System.Xml.XmlElement”。"解决方法如下,和newtonsoft.json这个库类似。

 XmlDocument xmlDoc = new XmlDocument();

 XmlReaderSettings settings = new XmlReaderSettings();

 settings.IgneComments = true;//忽略文档里面的注释

 XmlReader reader = XmlReader.Create(@"..\..\Book.xml", settings);

 xmlDoc.Load(reader);

2.使用XmlTextReader和XmlTextWriter

XmlTextReader和XmlTextWriter是以流的形式来读写XML文件.使用XmlTextReader读取数据的时候,首先创建一个流,然后用read()方法来不断的向下读,根据读取的结点的类型来进行相应的操作.如下:

以后继续....

C#读取XML文件的方法的更多相关文章

  1. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  2. C#中经常使用的几种读取XML文件的方法

    XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...

  3. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  4. C#三种常用的读取XML文件的方法

    下面我将介绍三种常用的读取XML文件的方法.分别是 1: 使用 XmlDocument 2: 使用 XmlTextReader 3: 使用 Linq to Xml 这里我先创建一个XML文件,名为Bo ...

  5. springboot整合mybatis时无法读取xml文件解决方法(必读)

    转    http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...

  6. 两种读取.xml文件的方法

    这里介绍两种读取配置文件(.xml)的方法:XmlDocument及Linq to xml 首先简单创建一个配置文件: <?xml version="1.0" encodin ...

  7. 在C#中创建和读取XML文件

    1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...

  8. C#中读取xml文件指定节点

    目录(?)[-] XmlDocumentSelectSingleNode方法的使用 XmlDocumentSelectNodes方法的使用 通过节点属性查找指定节点   参考:Select XML N ...

  9. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

随机推荐

  1. CentOS下Apache安装SSL

    https是一个安全的访问方式,数据在传输过程中是加密的.https基于ssl. 一.安装apache和ssl模块1.安装apacheyum install httpd2.安装ssl模块yum ins ...

  2. jQuery Mobile Datepicker 使用

    插件引入文件: <meta name="viewport" content="width=device-width, initial-scale=1"&g ...

  3. Element selector doesn't have required

    这个错误是因为创建xml文件时文件类型弄成了layout xml file ,这样就会自动到layout文件夹下 应该是drawable resource file

  4. Android简单自定义圆形和水平ProgressBar

    ProgressBar简介 继承于View类,直接子类有AbsSeekBar和ContentLoadingProgressBar,其中AbsSeekBar的子类有SeekBar和RatingBar,可 ...

  5. requireJS的使用_API(1)

    之前有介绍过requireJS(模块化开发),可以看看 ,但是不详细,所以今天参考官网来详细介绍一下: 1.加载js文件: RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<scr ...

  6. hdu1710 二叉树的遍历

    Problem Description 已知前序和中序 求后序 Input The input contains several test cases. The first line of each ...

  7. iOS10 UI教程视图的绘制与视图控制器和视图

    iOS10 UI教程视图的绘制与视图控制器和视图 iOS10 UI视图的绘制 iOS10 UI教程视图的绘制与视图控制器和视图,在iOS中,有很多的绘图应用.这些应用大多是在UIView上进行绘制的. ...

  8. 浩瀚技术 安卓版移动开单手持微POS PDA无线移动开单软件 -安卓版移动手持开单设备

    PDA数据采集器,是深圳浩瀚技术有限公司最新研发的一款安卓版移动手持开单设备,它通过WIFI和GPRS连接并访问电脑,从进销存软件中读取数据,实现移动开单,打破电脑开单模式. 它自带扫描器,可直接扫描 ...

  9. iOS 为类添加Xib里面配置的view

    创建Empty文件,最好与其Controller同名, 在File's Owner的类属性里面指明其所属类(或者说它是个什么Controller), 从File's Owner右键拖向内部创建的视图( ...

  10. Codeforces 696D Legen...(AC自动机 + 矩阵快速幂)

    题目大概说给几个字符串,每个字符串都有一个开心值,一个串如果包含一次这些字符串就加上对应的开心值,问长度n的串开心值最多可以是多少. POJ2778..复习下..太弱了都快不会做了.. 这个矩阵的乘法 ...