• 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

  • 相关阅读:
    J2EE学习笔记:Filter
    J2EE学习笔记:HTTP协议
    J2EE学习笔记:JSP
    Hibernate 笔记(二) 数据关系
    top命令总结
    让gdb能打印C++中的容器类型
    ps命令注意事项
    自己动手写一个自动登录脚本gg
    request 中url拼接排序参数与签名算法
    python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法
  • 原文地址:https://www.cnblogs.com/51net/p/3384966.html
Copyright © 2020-2023  润新知