先写一个xml文件:

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

1.使用XmlDocument

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

  1. 1: xn 代表一个结点
  1. 2: xn.Name;//这个结点的名称
  1. 3: xn.Value;//这个结点的值
  1. 4: xn.ChildNodes;//这个结点的所有子结点
  1. 5: xn.ParentNode;//这个结点的父结点,等等...
  1. 1.1 读取所有的数据.
  2. 使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件.
  3.  
  4. : XmlDocument doc = new XmlDocument();
  5. : doc.Load(@"..\..\Book.xml");
  6.  
  7. 然后可以通过调用SelectSingleNode得到指定的结点,通过GetAttribute得到具体的属性值.参看下面的代码
  8.  
  9. // 得到根节点bookste
  10.  
  11. XmlNode xn = xmlDoc.SelectSingleNode"bookste");
  12.  
  13. // 得到根节点的所有子节点
  14.  
  15. XmlNodeList xnl = xn.ChildNodes;
  16.  
  17. feach XmlNode xn1 in xnl
  18.  
  19. {
  20.  
  21. BookModel bookModel = new BookModel();
  22.  
  23. // 将节点转换为元素,便于得到节点的属性值
  24.  
  25. XmlElement xe = XmlElementxn1;
  26.  
  27. // 得到ISBN两个属性的属性值
  28.  
  29. var isnb = xe.GetAttribute"ISBN").ToString();
  30.  
  31. // 得到Book节点的所有子节点
  32.  
  33. XmlNodeList xnl0 = xe.ChildNodes;
  34.  
  35. var name=xnl0.Item().InnerText;
  36. }

  1.  

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

  1. XmlDocument xmlDoc = new XmlDocument();
  2.  
  3. XmlReaderSettings settings = new XmlReaderSettings();
  4.  
  5. settings.IgneComments = true;//忽略文档里面的注释
  6.  
  7. XmlReader reader = XmlReader.Create(@"..\..\Book.xml" settings);
  8.  
  9. xmlDoc.Loadreader);

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. ORA-1461 encountered when generating server alert SMG-3500

    Doc ID 461911.1 Patch 6602742 Applies to: Oracle Database - Enterprise Edition - Version 10.2.0.3 an ...

  2. js 动态时钟

    js 动态时钟 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  3. php判断访问的当前设备是手机还是电脑

    <?php function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AG ...

  4. phpcms_v9 多图字段 内容页,首页,分页自定义字段调用

    phpcms_v9 多图字段 内容页,首页,分页自定义字段调用 说明:自定义多图字段名 shigongtu 1 内容页调用 {loop $shigongtu $r}      <img src= ...

  5. V for Vendetta

    V for Vendetta V字仇杀队 复仇者V 安迪·沃卓斯基 and Larry Wachowski 思想,是最强大的武器.因为,世界上的独裁政府,有一个共同特点就是推行洗脑和愚民政策. 经典台 ...

  6. HTTP访问的两种方式(HttpClient+HttpURLConnection)整合汇总对比(转)

    在Android上http 操作类有两种,分别是HttpClient和HttpURLConnection,其中两个类的详细介绍可以问度娘. HttpClient: HttpClient是Apache ...

  7. MongoDB3.0新特性

    3月3日,MongoDB3.0终于发布了. 主要特点包括了对之前收购的WiredTiger存储引擎的支持,插件式存储引擎API,SCRAM-SHA-1认证机制,并改进了解释功能.此外,包含了自动化.备 ...

  8. codeforce ABBYY Cup 3.0 - Finals (online version) B2. Shave Beaver! 线段树

    B2. Shave Beaver!   The Smart Beaver has recently designed and built an innovative nanotechnologic a ...

  9. 认识B/S架构

    Browser/Server即浏览器/服务器模式. Web浏览器主要功能 1. 申请服务,包括服务器的Ip地址和文件 2. 从服务器上下载 3. 解析下载的文件 4. 用过http协议进行通信 Web ...

  10. POJ 2464 Brownie Points II(树状数组)

    一开始还以为对于每根竖线,只要与过了任意一点的横线相交都可以呢,这样枚举两条线就要O(n^2),结果发现自己想多了... 其实是每个点画根竖线和横线就好,对于相同竖线统计(一直不包含线上点)右上左下总 ...