Linq to XML 读取XML 备忘笔记

本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html

Linq to XML 读取XML 备忘笔记

最近一个项目中有要用到 xml 读取,我首先想到的是使用 Linq 读取(XML 解析感觉有点麻烦),项目完成,现抽取其内容,作如下笔记备忘.

1. demo.xml


demo.xml

<?xml version="1.0" encoding="utf-8" ?>
<note>
  <conf>
    <to>infozero</to>
    <from>lerroy</from>
    <heading>测试信息</heading>
    <body>第一条测试信息</body>
    <title name="我的第一条消息">from myself</title>
  </conf>
  <conf>
    <to>infozero@163.com</to>
    <from>text</from>
    <heading> 时刻提醒我 </heading>
    <body>这是一条测试信息!</body>
    <title name="我的第二条消息">from others</title>
  </conf>
</note>

2.在 程序中引用以下命名空间:

using System;
using System.Linq;
using System.Xml.Linq;

3.读取方法如下:


main 函数入口

    class Program
    {
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load("demo.xml");
            var text = from t in doc.Descendants("conf")                  //定位到节点 (XML字符串中一定要有root根节点,否者读取不到。)
                       .Where(w => w.Element("to").Value.Contains('@'))   //若要筛选就用上这个语句 
                       select new
                       {
                           to = t.Element("to").Value,
                           froms = t.Element("from").Value,
                           head = t.Element("heading").Value,
                           body = t.Element("body").Value,
                           title = t.Element("title").Attribute("name").Value   //注意此处用到 attribute 
                       };
            foreach (var a in text)
            {
                Console.WriteLine(a.to);
                Console.WriteLine(a.froms);
                Console.WriteLine(a.head);
                Console.WriteLine(a.body);
                Console.WriteLine(a.title);
            }
            Console.ReadKey();
        }
    }

 

结果:

 

小结: Linq to Xml 确实是个好东西 ,它极大地方便了我们的编程。

Linq to XML读取xml的方法

添加应用:using System.Xml.Linq;

读取xml最重要的要知道xml是那种写法,因为linq已经把读取方式封装的相对傻瓜了,要有问题一定xml的结构问题。

第一种写法:

<?xml version="1.0" encoding="utf-8" ?>

<feeds>

  <feed>

    <image>ddddddddd</image>

    <link>fffffffff</link>

    <title>ddddddddddddddddd</title>

  </feed>

</feeds>

Linq语句:

 

 XDocument xdoc= XDocument.Load(Server.MapPath("xxx.xml"));

                var ad = from a in xdoc.Descendants("feed")

                        select new  

                         {

                            image = a.Element("image").Value, 

                             link = a.Element("link").Value,

                             title = a.Element("title").Value 

                         };

                foreach (var a in ad)

                    Response.Write(a.image);

第二种xml

 

<?xml version="1.0" encoding="utf-8" ?>

<BizADsList>

  <adData aid="1" image="815.jpg" link="http://www.dizhitiao.com" title="测试1"/>

  <adData aid="2" image="5815.jpg" link="http://www.dizhitiao.com" title="测试2"/>  // BizADsList节点元素下多个相同的adData节点元素

</BizADsList>

Linq语句:

 

 XDocument adList = XDocument.Load(Server.MapPath("Data.xml"));

                var ad = from a in adList.Descendants("BizADsList").Elements("adData")

                         select new  

                         {

                             image = a.Attribute("image").Value,

                             link = a.Attribute("link").Value,

                             title = a.Attribute("title").Value 

                         };

                string s = "";

                foreach (var a in ad)

                    s += a.image;

别告诉我没看出区别来。总之一句话,对xml要先多些了解。

---------- 后续补充:-----

另外一种 XML 格式 的解析参见:  http://www.cnblogs.com/portalsky/archive/2008/09/11/1289461.html 
XML 增删改查: http://www.cnblogs.com/greatverve/archive/2010/07/13/linq-to-xml-one-begin.html

时间: 2024-11-01 01:15:22

Linq to XML 读取XML 备忘笔记的相关文章

C# Linq使用XDocument读取Xml文件并形成结构树数据(json)

数据结构是这样的:  代码如下 复制代码 <?xml version="1.0" encoding="gb2312" ?> <address>   <province name="北京市">     <city name="北京辖区">       <country name="东城区" />       <country name=&quo

C#中使用XML——读取XML

xml 不对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式,数据按照这种格式在网络中传输然后再通过XSLT将数据转换成用户期望的样子表示出来,这样便轻易的解决了数据格式不兼容的问题.用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方! 我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML.下面我们来了解一下使用程序访问XML的一些基

markdown语法备忘笔记

1. 什么是markdown 2. 我选择的markdown编辑器 首先选择适合自己的markdown编辑器需要考虑几个方面: 平台:Mac OS X, Windows, Online, 插件形式 预览:实时预览.html预览 语法:选定某一款后,适应自己的习惯,不必太复杂 其它:如主题,快捷键,同步等 首先来说一下以下几款为什么我没选用:(纯属个人喜好) Sublime Text的插件markdown preview,编辑和预览是分离的,在浏览器里预览. CuteMarkEd,独立编辑器,支持

使用LINQ to XML来读取XML文档

用于XML的语言级集成查询(LINQ to XML)允许使用标准查询操作符就像树形操作符一样来查询XML数据,它能够提供类似XPath的导航在后代.祖先和兄弟的XML元素中导航.它简化了对XML数据的使用,不必使用额外的语言语法像XPath或XQuery.你可以使用LINQ to XML对你从文件系统.从一个远程web service或从一个内存中的XML内容中获得的XML执行LINQ查询.这篇文章将只关注于使用LINQ从一个XML文件--Customers.xml文件查询XML. 创建一个简单

解析linq to xml操作XML的示例分析_实用技巧

.Net中的System.Xml.Linq命名空间提供了linq to xml的支持.这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法.1. 使用linq to xml写xml:使用XDocument的构造函数可以构造一个Xml文档对象:使用XElement对象可以构造一个xml节点元素,使用XAttribute构造函数可以构造元素的属性:使用XText构造函数可以构造节点内的文本.如下实例代码: 复制代码 代码如下: cla

使用XmlDocument读取XML节点所有数据

网上有好多ASP.NET读取XML的例子,比如使用Dataset来读取,但本文教程却是使用XmlDocument来读取XML节点下所有数据,我们先来看下这个XML格式:SysRightsDb.xml  XML Code <?xml version="1.0" encoding="utf-8" ?> <root> <rights name="SYS"> <xml name="股票行情"

PHP读取xml方法介绍

一,什么是xml,xml有什么用途 XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言).Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML

用PHP编写和读取XML的几种方式_php技巧

一.使用DOM生成和读取XML文件 实例一: 复制代码 代码如下: <?php //Creates XML string and XML document using the DOM $dom = new DomDocument('1.0'); //add root - <books> $books = $dom->appendChild($dom->createElement_x_x ('books')); //add <book> element to <

php xmlreader simplexml DOMDocument等读取xml的例子

要处理 XML 文件,有两种传统的处理思路: SAX 和 DOM . SAX 基于事件触发机制,对 XML 文件进行一次扫描,完成要进行的处理: DOM 则将整个 XML 文件构造为一棵 DOM树,通过对 DOM 树的遍历完成处理.这两种方法各有优缺点, SAX 的处理思路相对抽象,DOM 的处理过程相对烦琐,都不很适合新手的入门.PHP5 推出了一套新的 XML 处理函数,即 SimpleXML .名如其实, SimpleXML 本身小巧精干,只提供了少量的几个方法函数,但用它处理起 XML