`
star65225692
  • 浏览: 277431 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

C#使用linq操作XML

 
阅读更多
LINQ to XML提供了更方便的读写xml方式。前几篇文章的评论中总有朋友提,你为啥不用linq to xml?现在到时候了,linq to xml出场了。
.Net中的System.Xml.Linq命名空间提供了linq to xml的支持。这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法。
1. 使用linq to xml写xml:
使用XDocument的构造函数可以构造一个Xml文档对象;使用XElement对象可以构造一个xml节点元素,使用XAttribute构造函数可以构造元素的属性;使用XText构造函数可以构造节点内的文本。

如下实例代码:

class Program
{
    static void Main(string[] args)
    {          
        var xDoc = new XDocument(new XElement( "root",
            new XElement("dog",
                new XText("dog said black is a beautify color"),
                new XAttribute("color", "black")),
            new XElement("cat"),
            new XElement("pig", "pig is great")));

        //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312
        //默认是缩进格式化的xml,而无须格式化设置
        xDoc.Save(Console.Out);

        Console.Read();
    }
}C#的XML读取、增加、修改和删除操作

上面代码将输出如下Xml:

<?xml version="1.0" encoding="gb2312"?>
<root>
  <dog color="black">dog said black is a beautify color</dog>
  <cat />
  <pig>pig is great</pig>
</root>

可以看出linq to xml比XmlDocument和XmlWriter要方便很多。
2. 使用linq to xml 读取xml
Linq是从集合中查询对象,在linq to xml中的集合是通过XElement的Elements(),Elements(string name),以及Descendants、DescendantsAndSelf、Ancestors、AncestorsAndSelf的几个重载方法 中获得。
获得XElement集合之后,可以通过XElement的Attribute(string name)方法获得元素的属性值,可以通过XElement的Value属性获得节点的文本值;使用linq就可以方便的做查询,做筛选排序了
还是上例中的xml,我们要读取root的所有字节点,并打印出来,如下代码:
class Program
{
    static void Main(string[] args)
    {
          
        var xDoc = new XDocument(new XElement( "root",
            new XElement("dog",
                new XText("dog said black is a beautify color"),
                new XAttribute("color", "black")),
            new XElement("cat"),
            new XElement("pig", "pig is great")));

        //xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312
        //默认是缩进格式化的xml,而无须格式化设置
        xDoc.Save(Console.Out);

        Console.WriteLine();

        var query = from item in xDoc.Element( "root").Elements()
                    select new
                    {
                        TypeName    = item.Name,
                        Saying      = item.Value,
                        Color       = item.Attribute("color") == null?(string)null:item.Attribute("color").Value
                    };


        foreach (var item in query)
        {
            Console.WriteLine("{0} 's color is {1},{0} said {2}",item.TypeName,item.Color??"Unknown",item.Saying??"nothing");
        }

        Console.Read();
    }
}

3. Linq to xml简单的应用

应用需求: 读取博客园的rss,然后在页面上输出最新的10篇博客信息

实现要点: 通过XDocument的Load静态方法载入Xml,通过linq查询最新10条数据

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server">
    protected override void OnLoad(EventArgs e)
    {
        //实际应用,通过读取博客园的RSS生成Html代码显示最新的博客列表
        //使用XDocument的Load静态方法载入Xml
        //玉开技术博客 http://www.cnblogs.com/yukaizhao
        var rssXDoc = XDocument.Load("http://www.cnblogs.com/rss");

        //使用linq to xml查询前10条新博客
        var queryBlogs = (from blog in rssXDoc.Descendants("item")
                          select new
                          {
                              Title = blog.Element("title").Value,
                              Url = blog.Element("link").Value,
                              PostTime = DateTime.Parse(blog.Element("pubDate").Value)
                          }).Take(20);
        repeaterBlogs.DataSource = queryBlogs;
        repeaterBlogs.DataBind();
        base.OnLoad(e);
    }
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Linq to Xml 实例</title>
</head>
<body>
    <ol>
        <asp:Repeater ID="repeaterBlogs" EnableViewState="false" runat="server">
            <ItemTemplate>
                <li><span style="float: right">
                    <%#Eval("PostTime") %></span><a href="<%#Eval("Url") %>"><%#Eval("Title") %></a></li>
            </ItemTemplate>
        </asp:Repeater>
    </ol>
</body>
</html>

 

 

分享到:
评论

相关推荐

    C# LinqXML使用LINQ技术对XML文件进行读取

    本文将详细介绍如何使用C#的LinqXML技术对XML文件进行读取。 首先,我们需要引入必要的命名空间。在C#代码中,确保包含了以下导入语句: ```csharp using System; using System.Linq; using System.Xml.Linq; ``` `...

    C# linq操作xml

    本主题将深入探讨如何使用C#的LINQ来处理XML,包括对单级和多级节点的查询、更新等操作。 首先,让我们了解什么是LINQ。LINQ是一种在C#中集成的数据查询机制,允许开发者使用相同的语法查询各种数据源,如数组、...

    C# LinqXML使用LINQ技术修改XML文件

    总的来说,C#的LinqXML通过提供直观且强大的API,使得XML操作变得更加简单。无论是创建、查询还是修改XML文档,都变得易如反掌。通过熟练掌握Linq to XML,开发者能够更加高效地处理XML数据,提高代码的可读性和可...

    C# LinqXML合计XML元素值

    在与XML交互时,LINQ to XML 提供了一种高效且易于使用的API,使得操作XML文档变得简单。本文将深入探讨如何使用C#的LINQ to XML来合计XML元素的值。 首先,我们需要了解XML的基本结构。XML(Extensible Markup ...

    Linq to xml,读取XMl节点值

    在本篇文章中,我们将深入探讨如何使用 LINQ to XML 来读取 XML 节点值,并将其绑定到应用程序中的不同组件,如 Windows Forms 控件。 1. **XML 基础** 在讨论 LINQ to XML 之前,我们先要了解 XML(Extensible ...

    C# LinqXML添加注释到XML文件

    通过学习和实践这些知识,你将能够熟练地使用C#的Linq to XML技术,不仅限于添加注释,还可以进行XML文档的查询、修改和操作。这在处理XML数据时将大有裨益,特别是在需要生成、解析或转换XML格式的数据时。

    linq 操作xmldemo

    【描述】"使用LINQ操作XML" LINQ to XML是LINQ的一个重要组成部分,它提供了对XML文档的强大支持。通过LINQ to XML,我们可以用C#或VB.NET语言直接编写查询,这些查询语句与数据库查询类似,但针对的是XML数据。...

    c#数据库操作Linq操作Xml源码.rar

    本压缩包"**c#数据库操作Linq操作Xml源码.rar**"主要关注两个核心主题:C#中的LINQ与XML操作。 一、LINQ简介 LINQ是.NET Framework 3.5及更高版本引入的一个特性,旨在统一各种数据源的查询语法。通过LINQ,开发者...

    C# LinqXML查找根元素

    本篇将深入探讨如何使用C# Linq to XML来查找根元素。 XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于数据交换和配置文件。在XML文档中,根元素是整个文档结构的起点和终点,它...

    C# LinqXML使用LINQ技术创建XML文件

    本文将深入探讨如何使用C#的LinqXML技术通过LINQ技术创建XML文件。 首先,我们需要引入必要的命名空间,这包括`System.Xml.Linq`,它包含了处理XML的所有类: ```csharp using System.Xml.Linq; ``` 创建XML文件...

    C# LinqXML将XML文件中的属性转换为元素

    在这个场景中,我们将探讨如何使用C#的LINQ to XML来将XML文件中的属性转换为元素。 首先,让我们了解XML的基本结构。XML是一种标记语言,用于存储和传输数据。数据以元素的形式存在,元素可以有子元素、文本内容和...

    C# LinqXML添加声明到XML文件

    在C#编程中,LINQ to XML是一种强大的API,用于创建、读取和修改XML文档。它是.NET Framework 3.5引入的新特性,为处理XML数据提供了简洁且高效的语法。当我们需要向XML文件中添加XML声明时,LINQ to XML提供了一种...

    C# LinqXML遍历指定节点下的所有对象

    在C#编程中,LINQ to XML是一种强大的API,用于处理XML...通过掌握`Descendants()`, `Elements()`, `Ancestors()`, `Attributes()`等方法以及LINQ查询表达式,开发者可以高效地进行XML操作,提升代码质量和可维护性。

    精通LINQ LINQ to XML

    LINQ to XML则专门针对XML数据进行查询操作,提供了高效的XML处理方式,简化了XML编程。 书中首先会介绍LINQ的基本概念,包括查询表达式语法、查询操作符和匿名类型的使用。通过学习,读者将理解如何利用LINQ简化...

    C#Linq to xml

    本实例将深入探讨C# LINQ to XML的基础知识,以及如何利用它来操作XML数据。 首先,LINQ(Language Integrated Query,语言集成查询)是.NET Framework 3.5引入的一项特性,它提供了在各种数据源(如集合、数组、...

    C# LinqXML访问指定节点的父节点

    以上就是使用C# LINQ to XML访问指定节点父节点的基本步骤。在实际应用中,根据XML文档的结构和需求,可能需要进行更复杂的查询和操作。例如,如果XML文档来自文件,需要先加载文件;如果数据在网络流中,可能需要...

    xml.linq.rar_C# LInq_dueabb_xml to linq

    "xml.linq.rar_C# LInq_dueabb_xml to linq"这个压缩包文件,主要包含了关于C#中使用LINQ处理XML的相关资料。 首先,我们需要理解什么是LINQ。LINQ(Language Integrated Query,语言集成查询)是.NET Framework ...

    linq to xml入门的例子

    其中,LINQ to XML是针对XML文档处理的一个重要部分,它提供了高效的XML操作方法,使得在.NET应用程序中处理XML变得更加简洁和直观。 ### LINQ to XML 基本概念 1. **XElement 和 XAttribute**: LINQ to XML 的...

    C# LinqXML查找指定名称的元素

    本篇文章将深入探讨如何使用C# LINQ to XML来查找指定名称的元素。 首先,我们需要引入`System.Xml.Linq`命名空间,该命名空间包含了处理XML所需的所有类。引入后,我们可以创建或加载XML文档,然后利用LINQ的查询...

    C#例子代码 A0510_LINQ_XML

    C#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XMLC#例子代码 A0510_LINQ_XML...

Global site tag (gtag.js) - Google Analytics