开始内容之前先分享一段话

有时候,当你知道要做什么的时候就做的很快,比如你要实现个功能,码字的活儿不算很难,做个检索也不会有什么难倒你的。
但是,做着做着,你发现好像世界上的工作都在重复,于是你有种心要飞起来的感觉,但总觉得脚步速度太慢,你开始抱怨进度,公司也对你充满期待,于是会给你配备助手,一来二去,你成为了小领导,你不再自己编码了,而且要做什么也都告诉你的助手们了,这时,你陷入了沉思,我该干什么呢?
偶然的,你发现某些事情朝着错误的方向发展,用户开始抱怨了,你跳出来,指出助手们的错误,然后事情过去了,你却停不下来,你怕这样的事情再次发生,于是你开始更深的沉思,这次你学会了思考,我要做的就是保持优秀的团队力量,如何保持呢?古板不是个办法,因为古板会使你的团队成员走你的老路,他们会感到单一、重复、枯燥。。。
你不能再去写代码以逃避无休无止的思考,因为你写的那点代码也起不到作用,还冷不丁的出个意外需要你公关,你很想突破,突破思维的限制,你发现突破不仅是你的挑战,更是你唯一的出路。

正文

<?xml version="1.0" encoding="utf-8" ?>
<Columns>
<column id="序号">
<name>序号</name>
</column>
<column id="检验项目">
<name>检验项目</name>
</column>
<column id="单位">
<name>单位</name>
</column>
<column id="标准要求">
<name>标准要求</name>
</column>
<column id="检验结果">
<name>检验结果</name>
</column>
<column id="结论">
<name>结论</name>
</column>
</Columns>

以上就是一个Xml文件,我们知道,Xml文件是用来存储数据的,那么我们如何遍历这些数据呢?
其实最简单的方法,就是使用Linq:

private void GetTestResultXml()
{
List<string> iTestResultXml=new List<string>();
//定义并从xml文件中加载节点(根节点)
XElement rootNode = XElement.Load(@"testResult.xml");
//查询语句: 获得根节点下name子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
select target;
foreach (XElement node in targetNodes)
{
iTestResultXml.Add(node.Value);
}
}

这样我们就可以获得<column/>标签里所有的数据了,并把他们存储到列表iTestResultXml中。
在testResult.xml文件中,我们看到,<column/>标签设置了本身的id,而此id并不是他的数据,而是他的一个属性,那么如果我们想获得他的属性而不是他标签里的内容该如何获得呢?

private void GetTestResultXml()
{
List<string> iXmlID = new List<string>();
//定义并从xml文件中加载节点(根节点)
XElement rootNode = XElement.Load(@"..\..\Xml\testResult.xml");
//查询语句: 获得根节点下name子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("column")
select target;
foreach (XElement node in targetNodes)
{
iXmlID.Add(node.Attribute("id").Value); //获取指定属性的方法
}
}

这样我们就获取了<column/>标签里id属性的列表iXmlID。

参考地址:http://docs.google.com/fileview?id=0B9T0APtVi1fyNjNhM2I4NmEtMTdmOS00NTUzLTljZTUtMDdhZjM4NzIzMGEz&hl=zh_CN

http://www.cnblogs.com/jiajiayuan/archive/2012/02/09/2343512.html

使用Linq快速的操作XML的更多相关文章

  1. Linq to XML操作XML文件

    LINQ的类型 在MSDN官方文件中,LINQ分为几种类型: . LINQ to Objects(或称LINQ to Collection),这是LINQ的基本功能,针对集合对象进行查询处理,包括基本 ...

  2. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  3. C#基础知识---Linq操作XML文件

    概述 Linq也就是Language Integrated Query的缩写,即语言集成查询,是微软在.Net 3.5中提出的一项新技术. Linq主要包含4个组件---Linq to Objects ...

  4. 操作xml文档的常用方式

    1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...

  5. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  6. 使用dom4j操作XML

    DOM4J介绍 DOM4J是使用Java语言编写的,用于读写及操作XML的一套组件,DOM4J同时具有DOM修改文件的优点和SAX读取快速的优点. DOM4J的使用 首先下载dom4j的JAR包,我用 ...

  7. 使用JDOM操作XML

    JDOM介绍 JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点. JDOM的使用 首先下载JDOM的JAR包,本文使用的是j ...

  8. C#操作XML方法集合

    一 前言 先来了解下操作XML所涉及到的几个类及之间的关系  如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...

  9. xpath 操作XML

    1.xpath 操作XML,底下部分代码被注释了,但是是完整功能,去除注释是正常使用的(有写命名和其他冲突,所以注释了) 总体有:完整读取xml,对xml的增删改查,对xml的特定操作 using S ...

随机推荐

  1. C++模板(基础)

    本文转至:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类 ...

  2. Fatal error compiling: 无效的目标发行版: 1.8 -> [Help 1] (zhuan)

    http://blog.csdn.net/z18137017273/article/details/53033613 ***************************************** ...

  3. spring相关资源

    1. 文档中英文 Spring Framework Reference Documentation http://docs.spring.io/spring/docs/4.1.7.RELEASE/sp ...

  4. java中的堆内存和栈内存

    Java把内存分成两种: 一种叫做栈内存 一种叫做堆内存 栈内存 : 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变 ...

  5. Fedora 防火墙关闭与开启

    重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off   或者 /sbin/chkconfig --level 2345 iptable ...

  6. localhost访问不了

    安装phpstudy后,localhost访问不了,在忙了很久之后,我吧virtualbox卸载了,把百度云也卸载了,然后就可以了,可能是因为公司的网络限制比较多,但百度云也太肯了, 也是看别人装了, ...

  7. VB6.0调用DLL

    目录 第1章 VB6.0调用DLL    1 1 VC++编写DLL    1 1.1 使用__stdcall    1 1.2 使用 .DEF 文件    1 2 简单数据类型    2 2.1 传 ...

  8. object-c NSString 转成特定编码格式如utf8、gbk等

    有两种方式 第一种是先转换成特定编码格式NSDATA 第二种是先转换成特定编码格式char *(cString) 转成gbk: 第一种: - (NSString *) utf82gbk:(NSStri ...

  9. android 内存泄露之jni local reference table overflow (max=512)

    在android项目中要实现一个需求 为了性能的要求只能用c代码来实现功能. 这样就牺牲了java跨平台性. 通过加载.so的方式,把用c实现的模块集成到app中. android提供jni层,作为一 ...

  10. JavaScript document

    window -- document用于表现HTML页面当前窗体的内容 document,中文"文档" document是BOM中最重要对象之一 document对象是window ...