日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

基于Visual Studio2010讲解LINQ读出数据库数据生成XML

發(fā)布時間:2023/12/10 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Visual Studio2010讲解LINQ读出数据库数据生成XML 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LINQ to XML 是一種啟用了 LINQ 的內存 XML 編程接口,使用它,可以在 .NET Framework 編程語言中處理 XML。?
LINQ to XML 最重要的優(yōu)勢是它與 Language-Integrated Query (LINQ) 的集成。 由于實現了這一集成,因此,可以對內存 XML 文檔編寫查詢,以檢索元素和屬性的集合。 LINQ to XML 的查詢功能在功能上(盡管不是在語法上)與 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更強的類型化功能、編譯時檢查和改進的調試器支持。?
通過將查詢結果用作 XElement 和 XAttribute 對象構造函數的參數,實現了一種功能強大的創(chuàng)建 XML 樹的方法。 這種方法稱為“函數構造”,利用這種方法,開發(fā)人員可以方便地將 XML 樹從一種形狀轉換為另一種形狀。
LINQ to XML 提供了改進的 XML 編程接口,這一點可能與 LINQ to XML 的 LINQ 功能同樣重要。 通過 LINQ to XML,對 XML 編程時,您可以實現任何預期的操作,包括:
從文件或流加載 XML。
將 XML 序列化為文件或流。
使用函數構造從頭開始創(chuàng)建 XML。
使用類似 XPath 的軸查詢 XML。
使用 Add、Remove、ReplaceWith 和 SetValue 等方法對內存 XML 樹進行操作。
使用 XSD 驗證 XML 樹。
使用這些功能的組合,可將 XML 樹從一種形狀轉換為另一種形狀。
創(chuàng)建 XML 樹是否方便,這一點非常重要。 例如,若要創(chuàng)建一個小型 XML 樹,可以編寫以下 C# 代碼:
XElement contacts = new XElement("Contacts", new XElement("Contact", new XElement("Name", "Patrick Hines"), new XElement("Phone", "206-555-0144", new XAttribute("Type", "Home")), new XElement("phone", "425-555-0145", new XAttribute("Type", "Work")), new XElement("Address", new XElement("Street1", "123 Main St"), new XElement("City", "Mercer Island"), new XElement("State", "WA"), new XElement("Postal", "68042") ) ) );?
請注意,縮進用于構造 XML 樹的代碼可顯示基礎 XML 的結構。?
直接使用 XML 元素
在使用 XML 編程時,主要關注的通常是 XML 元素,也可能關注屬性。 在 LINQ to XML 中,可以直接使用 XML 元素和屬性。 例如,可以執(zhí)行以下操作:
創(chuàng)建 XML 元素而根本不使用文檔對象。 當必須使用 XML 樹的片段時,這可簡化編程。
直接從 XML 文件加載 T:System.Xml.Linq.XElement 對象。
將 T:System.Xml.Linq.XElement 對象序列化為文件或流。
使用 LINQ to XML 時,僅在文檔的根級別添加注釋或處理說明時,才需使用 XDocument??
名稱和命名空間的簡化處理
處理名稱、命名空間和命名空間前綴通常是 XML 編程的復雜部分。LINQ to XML 完全不需要處理命名空間前綴,從而簡化了名稱和命名空間。 可以輕松控制命名空間前綴。 但如果您決定不顯式控制命名空間前綴,則在序列化時,LINQ to XML 將會分配命名空間前綴(如果需要)或使用默認命名空間進行序列化。 如果使用默認命名空間,則生成的文檔中將沒有命名空間前綴。?
下面我們來看LINQ讀出數據庫數據生成XML實戰(zhàn)例程:

本實例是一個從數據庫里讀出來省份,城市,地區(qū)的數據生成3個XML文件.

首先創(chuàng)建一個Linq to SQL的類, 然后將省份,城市,地區(qū)的表拖入類中:

然后新建一個類,加入代碼如下:
public void ResetProvinces(string path) { XElement xmlProvinces = new XElement("Provinces"); foreach (S_Province province in DB.S_Provinces) { xmlProvinces.Add( new XElement("Province", province.ProvinceName.ToString(), new XAttribute("ID", province.ProvinceID.ToString()), new XAttribute("ProvinceName", province.ProvinceName.ToString()) ) ); } xmlProvinces.Save(@path); } public void ResetCities(string path) { XElement xmlCities = new XElement("Cities"); foreach (S_City city in DB.S_Cities) { xmlCities.Add( new XElement("City", city.CityName.ToString(), new XAttribute("ID", city.CityID.ToString()), new XAttribute("CityName", city.CityName.ToString()), new XAttribute("PID", city.ProvinceID.ToString()), new XAttribute("ZipCode", city.ZipCode.ToString()) ) ); } xmlCities.Save(@path); } public void ResetDistract(string path) { XElement xmlDistricts =new XElement("Districts"); foreach (S_District district in DB.S_Districts) { xmlDistricts.Add( new XElement("District", district.DistrictName.ToString(), new XAttribute("ID", district.DistrictID.ToString()), new XAttribute("DistrictName", district.DistrictName.ToString()), new XAttribute("CID", district.CityID.ToString()) ) ); } xmlDistricts.Save(@path); }

最后執(zhí)行過代碼后可以看到XML效果:

(以城市為例)
<?xml version="1.0" encoding="utf-8"?> <Cities> <City ID="1" PID="1" ZipCode="100000">北京市</City> <City ID="2" PID="2" ZipCode="100000">天津市</City> <City ID="3" PID="3" ZipCode="050000">石家莊市</City> <City ID="4" PID="3" ZipCode="063000">唐山市</City> <City ID="5" PID="3" ZipCode="066000">秦皇島市</City> <City ID="6" PID="3" ZipCode="056000">邯鄲市</City> <City ID="7" PID="3" ZipCode="054000">邢臺市</City> <City ID="8" PID="3" ZipCode="071000">保定市</City> <City ID="9" PID="3" ZipCode="075000">張家口市</City> <City ID="10" PID="3" ZipCode="067000">承德市</City> <City ID="11" PID="3" ZipCode="061000">滄州市</City> <City ID="12" PID="3" ZipCode="065000">廊坊市</City> <City ID="13" PID="3" ZipCode="053000">衡水市</City> <City ID="14" PID="4" ZipCode="030000">太原市</City> <City ID="15" PID="4" ZipCode="037000">大同市</City> <City ID="16" PID="4" ZipCode="045000">陽泉市</City> <City ID="17" PID="4" ZipCode="046000">長治市</City> <City ID="18" PID="4" ZipCode="048000">晉城市</City> <City ID="19" PID="4" ZipCode="036000">朔州市</City> <City ID="20" PID="4" ZipCode="030600">晉中市</City> <City ID="21" PID="4" ZipCode="044000">運城市</City> <City ID="22" PID="4" ZipCode="034000">忻州市</City> <City ID="23" PID="4" ZipCode="041000">臨汾市</City> <City ID="24" PID="4" ZipCode="030500">呂梁市</City> <City ID="25" PID="5" ZipCode="010000">呼和浩特市</City> <City ID="26" PID="5" ZipCode="014000">包頭市</City> <City ID="27" PID="5" ZipCode="016000">烏海市</City> </Cities>

轉載于:https://www.cnblogs.com/yincheng01/archive/2010/05/20/2213239.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的基于Visual Studio2010讲解LINQ读出数据库数据生成XML的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。