XML基础学习02<linq to xml>
Linq to XML的理解
			
1:这是一种比较好的操作Xml的工具。
àXDocument  文档
àXElement     元素
àXAttribute    属性
àXText        文本
2:这里还是和我们之前创建xml的形式是一样的,只是这里更为的简单点。
  创建xmldocument节点,创建根元素,创建person元素,将person元素添加到根元素下面,在创建id属性这里是键值对形式,创建name,sex元素。并因为他们是对象,可以使用name.Value="阿辉";,通过add方法统一的保存到person元素。
- public
static
void Main(string[] args)
 - {
 - var doc = new XDocument();
 - //创建根元素
 - var root = new XElement("root");
 - doc.Add(root);
 - var person = new XElement("person");
 - XAttribute xId=");
 - XElement name=new XElement("name");
 - var sex = new XElement("dex");
 - name.Value = "阿辉";
 - sex.Value = "";
 - person.Add(xId,name,sex);
 - root.Add(person);
 - doc.Save("ahuiLinq.xml");
 - }
 
		
3:再来一个简单的XML文档的形式。
直接就好像在写LINQ一样,直接就写完了。
- static
void Main(string[] args)
 - {
 - new XDocument(
 - new XElement("root",
 - new XElement("person",
 - "),
 - new XElement("name","ahji"),
 - "),
 - new XElement("sex","女")
 - ))).Save("ahui02_XML.xml");
 - }
 

		
其实这里面的原理和之前我们写的那种形式的是一样的。我们只需要按照之前的顺序写下去就行了。
4:我们可以来好好的感觉下XML的强大之处。
  _——》使用xml将数据库中的数据进行临时的保存
- var xdoc=new XDocument(new XElement("PersonCollection"));
 - Random random=new Random();
 - //我们可以从文本文件和DB中取到数据,保存到xml文件中。
 - for (int i = 0; i <100; i++)
 - {
 - xdoc.Root.Add(
 - new XElement("Person",
 - new XAttribute("id",i+1),
 - new XElement("name","阿辉"+i),
 - new XElement("age",random.Next(41)),
 - new XElement("sex","男女"[random.Next(2)]))
 - );
 - }
 - xdoc.Save("Db中读取的数据.xml");
 
这里有一个小的知识点,我们发现在最后面那个有个男女的字符,但是后面直接跟了个[]这个是利用随机数是0,1来决定前面字符串中的位置,显示的是男或女。感觉很高端的样子。
- new XElement("sex","男女"[random.Next(2)]))
 
		
		
5:直接将字符串转换为xml文档,那么就是在字符串中直接写代码就行了。
- XDocument.Parse(@"
 - <root>
 - <person id=""004"">
 - <name>阿辉</name>
 - <age>23</age>
 - <sex>男</sex>
 - </person>
 - </root>
 - ").Save("stringToXml.xml");
 

		
这样的做法就比较之前的更加的简单了。
6:当xml文档的内容特别多,且我们需要某个文件的时候就需要使用我们查找的功能,
这里有具体的步骤。
   *:加载xml文件
   *:查找
*:具体的查找公式,这里的e是节点对象,也是属性,标签,这里主要进行判断。
			//var query=xdoc.DescendantNodes().where(e=>{返回bool值得判断条件,其实这里就是写逻辑判断})+xdoc.DescendantNodes()返回全部的节点集合
- string path = "Db中读取的数据.xml";
 - XDocument xdoc = XDocument.Load(path);
 - var query = xdoc.
 - DescendantNodes().
 - Where(e =>
 - {
 - //返回Bool值得判断条件,e是节点对象,有属性,标签,
 - XElement els = e as XElement;
 - if (els == null) return
false; - XElement age = els.Element("age");
 - XElement sex = els.Element("女");
 - if(age !=null && sex !=null)
 - {
 - int numAge = Convert.ToInt32(age.Value);
 - if (numAge >= 20 && numAge <= 25)
 - {
 - return
true; - }
 - else
 - {
 - return
false; - }
 - }
 - else
 - {
 - return
false; - }
 - });
 - XElement root=new XElement("root");
 - //这里遍历得到的数据就是XElement数据。
 - foreach (XElement item in query)
 - {
 - root.Add(item);
 - }
 - new XDocument(root).Save("Search.xml");
 
XML基础学习02<linq to xml>的更多相关文章
- 转载---SQL Server XML基础学习<3>之--FOR XML EXPLICIT
		
--使用 RAW 和 AUTO 模式不能很好地控制从查询结果生成的 XML 的形状.--但是,对于要从查询结果生成 XML,EXPLICIT 模式会提供非常好的灵活性. --必须以特定的方式编写 EX ...
 - 转载---SQL Server XML基础学习<2>之--FOR XML AUTO/RAW
		
本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...
 - 转载---SQL Server XML基础学习<1>之--FOR XML PATH
		
--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb ...
 - Linq学习<四> linq to XML
		
LINQ to XML并不打算替代标准的XML API,例如,XML DOM(Document Object Model).Path.XQuery和XSLT等.如果熟悉这些API或当前需要使用或学习它 ...
 - Linq学习笔记---Linq to Xml操作
		
LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument EmptySequence 获取空的元素集合 FirstAttribut ...
 - xml基础学习笔记02
		
接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...
 - C#学习之Linq to Xml
		
前言 我相信很多从事.NET开发的,在.NET 3.5之前操作XML会比较麻烦,但是在此之后出现了Linq to Xml,而今天的主人公就是Linq to Xml,废话不多说,直接进入主题. 题外:最 ...
 - xml基础学习笔记01
		
注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象.element应称作元素,毕竟这更符合英文的本意.至于标 ...
 - XML 基础学习
		
在w3school看到了XML的教程,想到以前工作学习中也接触到了XML,但只是简单搜索了解了下,没有认真去学习XML的基础,所以现在认真看下其基础部分,并写篇博客作为笔记记录下. XML 简介 XM ...
 
随机推荐
- Xamarin 跨移动端开发系列(01) --  搭建环境、编译、调试、部署、运行
			
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...
 - angular ng-repeat+sortable 拖拽demo
			
由于项目需求,需要使用angular 实现列表的增.删.改,并且列表支持拖拽. 看了下angular-ui 里面的sortable组件,使用起来也是非常简单,几十行代码就完成了所需功能. 我现在懒得想 ...
 - Guava - 并行编程Futures
			
Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并借助于Futures静态扩展. 继承至Future的ListenableFuture,允许我 ...
 - DISCUZ 自定义模板
			
DISCUZ 自定义模板 模板安装和维护 安装新模板 将模板template打包放在对应目录:template/ 后台 -> 界面 -> 风格管理 , 安装模板 后台 -> 界面 - ...
 - Winform文件下载之WinINet
			
在C#中,除了webclient我们还可以使用一组WindowsAPI来完成下载任务.这就是Windows Internet,简称 WinINet.本文通过一个demo来介绍WinINet的基本用法和 ...
 - MYSQL分页存储过程及事务处理
			
最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...
 - tr
			
参照http://www.cnblogs.com/djcsch2001/archive/2011/05/08/2040255.html tr -options set1 [set2] ---- set ...
 - Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
			
Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结 1.1. 五中滤镜的分别效果..1 1.2. 基于肤色的图片分类1 1.3. 性能提升2 1.4. --co ...
 - MyBatis 环境搭建 (一)
			
一.MyBatis简介 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简 ...
 - 每天一个linux命令(15):tail 命令
			
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...