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 ...
随机推荐
- 【面试必备】CSS盒模型的点点滴滴
从接触CSS布局开始,就一直在听盒模型的概念了,网上的文章有很多,深浅不一.有些人会认为盒模型很简单,不就是border.margin.padding.content嘛,一个元素所占的空间就是把它们都 ...
- [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...
- [stm32] NRF24L01+USART搞定有线和无线通信
前言 一般进行远程监控时,2.4G无线通信是充当远程数据传输的一种方法.这时就需要在现场部分具备无线数据发送装置,而在上位机部分由于一般只有串口,所以将采集到的数据送到电脑里又要在上位机端设计一个数据 ...
- 分享一些Hadoop环境搭建所用到的软件
本来想用土的掉渣的语言说说hadoop配置的,因为最近总有人问我,环境搭建老出莫名其妙的问题,可是写到一半,还是决定不写了,网上教程好多好多,而大家遇到问题有很多是软件版本不对应造成的,因此我就把大家 ...
- flex swf和movieclip之前的微妙关系
开始不清楚, 一直尝试想load图片一样加载一个swftools转换的swf,然后在尝试转换成movieclip的时候,总是报错, avmiMovieClip 不能转换成movieclip之类的. 但 ...
- 浮动ip
浮动ip 其实就是动态ip, 静态IP是固定不变的,不管你用不用这个IP上网,这个IP都是属于你的动态IP则是在使用的时候由DHCP服务器临时分配给你的,不用则不分配在网络中如果设置了一部分静态IP地 ...
- Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15
Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15 1. attilax重要案例的分类(atiuse,auBackTech,bizImp)3 1.1. 两个book3 1.2. ...
- C#并行编程-Task
菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 ...
- WebBrowser设置Cookie
在winform里面经常会用到WebBrowser,这是一个难点就是如何设置cookies,注意,Docment对象是只读的,所以WebBrowser.Docment.cookie也就只有get方法, ...
- mysql如果数据不存在,则插入新数据,否则更新的实现方法
mysql如果数据不存在,则插入新数据,否则更新的实现方法 //如果不存在,则插入新数据 $sql = "INSERT INTO {$ecs->table('cat_lang')} ( ...