Linq to XML的理解

1:这是一种比较好的操作Xml的工具。

àXDocument 文档

àXElement 元素

àXAttribute 属性

àXText 文本

2:这里还是和我们之前创建xml的形式是一样的,只是这里更为的简单点。

创建xmldocument节点,创建根元素,创建person元素,将person元素添加到根元素下面,在创建id属性这里是键值对形式,创建name,sex元素。并因为他们是对象,可以使用name.Value="阿辉";,通过add方法统一的保存到person元素。

  1. public
    static
    void Main(string[] args)
  2. {
  3.     var doc = new XDocument();
  4.     //创建根元素
  5.     var root = new XElement("root");
  6.     doc.Add(root);
  7.     var person = new XElement("person");
  8.     XAttribute xId=");
  9.     XElement name=new XElement("name");
  10.     var sex = new XElement("dex");
  11.     name.Value = "阿辉";
  12.     sex.Value = "";
  13.     person.Add(xId,name,sex);
  14.     root.Add(person);
  15.     doc.Save("ahuiLinq.xml");
  16. }


3:再来一个简单的XML文档的形式。

直接就好像在写LINQ一样,直接就写完了。

  1. static
    void Main(string[] args)
  2. {
  3.     new XDocument(
  4.         new XElement("root",
  5.             new XElement("person",
  6.                 "),
  7.                 new XElement("name","ahji"),
  8.                 "),
  9.                 new XElement("sex","女")
  10.                    ))).Save("ahui02_XML.xml");
  11. }


其实这里面的原理和之前我们写的那种形式的是一样的。我们只需要按照之前的顺序写下去就行了。

4:我们可以来好好的感觉下XML的强大之处。

_——》使用xml将数据库中的数据进行临时的保存

  1. var xdoc=new XDocument(new XElement("PersonCollection"));
  2.  Random random=new Random();
  3.  //我们可以从文本文件和DB中取到数据,保存到xml文件中。
  4.  for (int i = 0; i <100; i++)
  5.  {
  6.      xdoc.Root.Add(
  7.          new XElement("Person",
  8.              new XAttribute("id",i+1),
  9.              new XElement("name","阿辉"+i),
  10.              new XElement("age",random.Next(41)),
  11.              new XElement("sex","男女"[random.Next(2)]))
  12.          );
  13.  }
  14.  xdoc.Save("Db中读取的数据.xml");

这里有一个小的知识点,我们发现在最后面那个有个男女的字符,但是后面直接跟了个[]这个是利用随机数是0,1来决定前面字符串中的位置,显示的是男或女。感觉很高端的样子。

  1. new XElement("sex","男女"[random.Next(2)]))



5:直接将字符串转换为xml文档,那么就是在字符串中直接写代码就行了。

  1.             XDocument.Parse(@"
  2. <root>
  3.     <person id=""004"">
  4.         <name>阿辉</name>
  5.         <age>23</age>
  6.         <sex>男</sex>
  7.    </person>
  8. </root>
  9.                                    ").Save("stringToXml.xml");


这样的做法就比较之前的更加的简单了。

6:当xml文档的内容特别多,且我们需要某个文件的时候就需要使用我们查找的功能,

这里有具体的步骤。

*:加载xml文件

*:查找

*:具体的查找公式,这里的e是节点对象,也是属性,标签,这里主要进行判断。


//var query=xdoc.DescendantNodes().where(e=>{返回bool值得判断条件,其实这里就是写逻辑判断})+xdoc.DescendantNodes()返回全部的节点集合

  1. string path = "Db中读取的数据.xml";
  2. XDocument xdoc = XDocument.Load(path);
  3. var query = xdoc.
  4.     DescendantNodes().
  5.     Where(e =>
  6.     {
  7.         //返回Bool值得判断条件,e是节点对象,有属性,标签,
  8.         XElement els = e as XElement;
  9.         if (els == null) return
    false;
  10.         XElement age = els.Element("age");
  11.         XElement sex = els.Element("女");
  12.         if(age !=null && sex !=null)
  13.         {
  14.             int numAge = Convert.ToInt32(age.Value);
  15.             if (numAge >= 20 && numAge <= 25)
  16.             {
  17.                 return
    true;
  18.             }
  19.             else
  20.             {
  21.                 return
    false;
  22.             }
  23.         }
  24.         else
  25.         {
  26.             return
    false;
  27.         }
  28.     });
  29. XElement root=new XElement("root");
  30. //这里遍历得到的数据就是XElement数据。
  31. foreach (XElement item in query)
  32. {
  33.     root.Add(item);
  34. }
  35. new XDocument(root).Save("Search.xml");

XML基础学习02<linq to xml>的更多相关文章

  1. 转载---SQL Server XML基础学习<3>之--FOR XML EXPLICIT

    --使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...

  2. 转载---SQL Server XML基础学习<2>之--FOR XML AUTO/RAW

    本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...

  3. 转载---SQL Server XML基础学习<1>之--FOR XML PATH

    --> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL    DROP TABLE #tbGO CREATE TABLE #tb      ...

  4. Linq学习<四> linq to XML

    LINQ to XML并不打算替代标准的XML API,例如,XML DOM(Document Object Model).Path.XQuery和XSLT等.如果熟悉这些API或当前需要使用或学习它 ...

  5. Linq学习笔记---Linq to Xml操作

    LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument  EmptySequence  获取空的元素集合  FirstAttribut ...

  6. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...

  7. C#学习之Linq to Xml

    前言 我相信很多从事.NET开发的,在.NET 3.5之前操作XML会比较麻烦,但是在此之后出现了Linq to Xml,而今天的主人公就是Linq to Xml,废话不多说,直接进入主题. 题外:最 ...

  8. xml基础学习笔记01

    注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象.element应称作元素,毕竟这更符合英文的本意.至于标 ...

  9. XML 基础学习

    在w3school看到了XML的教程,想到以前工作学习中也接触到了XML,但只是简单搜索了解了下,没有认真去学习XML的基础,所以现在认真看下其基础部分,并写篇博客作为笔记记录下. XML 简介 XM ...

随机推荐

  1. Backbone源码解析(四):View(视图)模块

    View视图故名思义,它控制的是界面.我们可以把一个大的网页分成很多部分的视图,按照backbone的架构,每一个视图对应都是一个对象,我们可以通过元素的钩子(id或者class或者其他选择器)把它们 ...

  2. 讲讲HashCode的作用

    前言 Object提供给我们了一个Native的方法“public native int hashCode();”,本文讲讲Hash是什么以及HashCode的作用 Hash 先用一张图看下什么是Ha ...

  3. 作业二:Github注册过程

    第一步.打开Github官网https://github.com/ ,在相应位置填写注册名.注册邮箱.注册密码完成后点击注册. 第二步.这时会弹出一个界面,让你选择你的私人计划(personal pl ...

  4. 值得使用的Spring Boot

    2013年12月12日,Spring发布了4.0版本.这个本来只是作为Java平台上的控制反转容器的库,经过将近10年的发展已经成为了一个巨无霸产品.不过其依靠良好的分层设计,每个功能模块都能保持较好 ...

  5. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇

    工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...

  6. 使用aggregate在MongoDB中查找重复的数据记录

    我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...

  7. SpringMVC自定义注入controller变量

    springmvc config the controller parameter injection 问题描述 在SpringMVC中默认可以注入Model,ModelAndView,@Reques ...

  8. Objective-C 随机数

    有个项目要给客户发送随机验证码, 试了下这样可以 srand(time()); code = [NSString stringWithFormat: - )) + ];

  9. 将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)

    回到目录 对于transactionscope不了解的同学,可以看我的相关文章 第二十六回   将不确定变为确定~transactionscope何时提升为分布式事务? 第二十七回   将不确定变为确 ...

  10. JSONP浅析

    DEMO : JSONP示例 为什么使用JSONP JSONP和JSON是不一样的.JSON(JavaScript Object Notation)是一种基于文本的数据交换方式,或者叫做数据描述格式. ...