前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linq to XML 读取XML 备忘笔记

Linq to XML 读取XML 备忘笔记

作者头像
跟着阿笨一起玩NET
发布2018-09-18 17:55:37
7170
发布2018-09-18 17:55:37
举报

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

Linq to XML 读取XML 备忘笔记

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

1. demo.xml

代码语言:javascript
复制
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.在 程序中引用以下命名空间:

代码语言:javascript
复制
using System;
using System.Linq;
using System.Xml.Linq;

3.读取方法如下:

代码语言:javascript
复制
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的结构问题。

第一种写法:

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linq to XML读取xml的方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档