• Linq To Xml


    关于Linq的简介请看这篇文章:查询表达式(LINQ)简介

    本文简要介绍通过Linq操作XML文件

    1.准备一个XML文件

    本例的XML文件内容主要是书籍信息,代码如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <Books>
      <Category Order="1" Name="文学类">
        <Book Order="1" Name="战争与和平" Author="张三" Price="120.00" Publish="北京大学出版社"></Book>
        <Book Order="2" Name="简爱" Author="李四" Price="153.00" Publish="清华大学出版社"></Book>
        <Book Order="3" Name="罪与罪" Author="王五" Price="89.00" Publish="工业出版社"></Book>
      </Category>
    
      <Category Order="3" Name="计算机类">
        <Book Order="1" Name="Linq高级编程" Author="童贝" Price="67.40" Publish="北京大学出版社"></Book>
        <Book Order="2" Name="深入浅出WPF" Author="向刚" Price="65.00" Publish="清华大学出版社"></Book>
        <Book Order="3" Name="ASP.Net MVC4" Author="马六" Price="89.00" Publish="工业出版社"></Book>
      </Category>
    
      <Category Order="2" Name="科技类">
        <Book Order="1" Name="自然" Author="邵叶" Price="130.40" Publish="北京大学出版社"></Book>
        <Book Order="2" Name="新工业革命" Author="李安" Price="65.00" Publish="清华大学出版社"></Book>
        <Book Order="3" Name="时空" Author="马六" Price="150.00" Publish="工业出版社"></Book>
      </Category>
    </Books>

    2.编写Book类

     创建一个Book类

    public class Book
        {
            /// <summary>
            /// 分类名称
            /// </summary>
            public string Category { get; set; }
    
            /// <summary>
            /// 书籍名称
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// 价格
            /// </summary>
            public string Price { get; set; }
    
            /// <summary>
            /// 作者
            /// </summary>
            public string Author { get; set; }
    
            /// <summary>
            /// 出版社
            /// </summary>
            public string Publish { get; set; }
        }

    3.通过Linq操作XML文件


       先引入命名空间

    using System.Xml.Linq;

    操作XML文件的代码主要如下:

    private void LoadXml()
            {
                XElement bookXml = XElement.Load(Server.MapPath("~/Book.xml"));
    
                if (bookXml == null)
                {
                    return;
                }
    
                // 查找所有书籍分类
                var categorysElement = from item in bookXml.Elements("Category")
                               orderby (int.Parse(item.Attribute("Order").Value))
                               select item;
                List<Book> listBook = new List<Book>();
    
                foreach (var categoryElement in categorysElement)
                {
                    // 获取书籍分类的名称
                    string categoryName = categoryElement.Attribute("Name").Value;
    
                    // 查找此分类下的所有书籍
                    var booksElement = from book in categoryElement.Elements("Book")
                                orderby (int.Parse(book.Attribute("Order").Value))
                                select book;
    
                    foreach (var bookElement in booksElement)
                    {
                        Book book = new Book();
                        book.Category = categoryName;
                        book.Name = bookElement.Attribute("Name").Value;
                        book.Author = bookElement.Attribute("Author").Value;
                        book.Price = bookElement.Attribute("Price").Value;
                        book.Publish = bookElement.Attribute("Publish").Value;
                        listBook.Add(book);
                    }
                }
    
                this.grdBooks.DataSource = listBook;
                this.grdBooks.DataBind();
            }


    结果如下图所示:

     代码下载:LinqToXml

  • 相关阅读:
    SHAREPOINT2007 文档库中通过EMAIL发送文档URL为乱码的解决方法
    ReadTrace
    实战分区表:SQL Server 2k5&2k8系列
    mssql 如何创建跟踪
    SQL Server自定义异常的使用raiserror
    SQL Server 2008内存及I/O性能监控
    实战 SQL Server 2008 数据库误删除数据的恢复
    MSSQL常用性能測試語句
    sqlserver 2008 设置了镜像 如何收缩日志文件
    复制订阅错误处理。
  • 原文地址:https://www.cnblogs.com/shaomenghao/p/3362242.html
Copyright © 2020-2023  润新知