LINQ解析XML

 

讀取XML文檔

       這裏面主要涉及的類包括XElement,XDocument,下面主要是用一個很簡單的文檔來描述一下其使用方法

建立一個book.xml文件

 

那麼具體過程主要分爲2步,先加載文件至XElement或XDocument對象,然後用LINQ TO XML對其進行操作

首先看XElement的用法

   var query = from m in XElement.Load(Server.MapPath("book.xml")).Elements("book")
                   select m;
            this.GridView1.DataSource = query;
            this.GridView1.DataBind();

界面上最終顯示的會是這樣的效果QQ截圖未命名

那麼這個地方需要注意的是包含在查詢結果的數據集並沒有顯示我們期望的節點數據,而且每個子節點也沒有作爲其中一個獨立字段顯示,這是因爲,返回的對象是泛型XElement的集合,而不是Book對象,因爲這裏LINQ無法指定每個節點應映射爲何種對象。

可以把上面的查詢語句做一下簡單的修改:

 var query = from m in XElement.Load(Server.MapPath("book.xml")).Elements("book")
                        select new
                     {
                            Title = m.Element("title").Value,
                           Time = m.Element("time").Value
                      };

這樣界面上就會顯示我們所需要顯示的數據了,這裏需要注意的是,XElement的Load方法是試圖加載整個文檔,在xml文件比較大的時候就不是很方便了,所以下面看下XDocument的方法,這個基本上就如出一輒,不詳細的介紹了

  string path = Server.MapPath("~/book.xml");
            XDocument doc = XDocument.Load(path);
            var query = from book in doc.Descendants("book")
                        where book.Element("title").Value.Equals("Book1")
                        select new
                        {
                            Title = book.Element("title").Value,
                            Time = book.Element("time").Value
                        };

使用LINQ TO XML在操作XML感覺還是很方便的,同時省了許多不必要的語法,掌握還是很必要的,這裏也僅僅是一個簡單的介紹,不過我想對於大部分的操作,這幾行代碼基本也就夠了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章