天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

淺談如何使用.NET存儲XML數據

  XML Bulk Load和Updategrams,這兩種客戶端技術使用帶有注解的大綱指定XML文檔內容和數據庫的表之間的映射;OpenXML是一種服務器端技術,它允許你在XML文檔上定義關系視圖,有了OpenXML的關系視圖,你就能使用T-SQL代碼查詢XML文檔中的數據并把結果存儲在你的SQL Server數據庫中。

  這三種技術中的每一種都是為特定的目的設計的。XML Bulk Load把來自很大的XML文檔的數據存儲在SQL Server中;Updategrams執行SQL Server數據的優化更新(優化更新是沒有鎖(lock)的更新,在這種更新中系統檢測是否有其它用戶在原來讀取數據后改變了它);OpenXML提供了人們熟悉的XML數據關系訪問方法。

  在這三種技術中,OpenXML是最靈活的,因為它提供了一個編程模型(T-SQL),在把XML數據存儲在SQL Server數據庫之前,你可以使用這種編程模型在XML數據上編寫業務規則或執行計算邏輯。但是,由于OpenXML是一種基于服務器的技術,如果你頻繁的使用它或者有大量的文檔,它會降低SQL Server的性能。不過,如果你采用了微軟.NET框架組件,你就可以使用ADO.NET的數據集繞開這些性能和可伸縮性方面的限制,ADO.NET數據集賦予你一個強大的技術--為把XML數據存儲在SQL Server包含了一個完整的編程模型。

數據集、數據表和XML映射

  你可以使用數據集簡單地從SQL Server中生成XML查詢結果。通過提供一種可以在客戶端和中間層計算機上使用的關系數據緩存(cache),數據集能夠載入和維護多種數據源(包括SQL Server、其它的關系型數據庫和XML)中的數據。

  當你從XML文檔中載入一個數據集的時候,該數據集必須把存儲在層次XML表現(representation)中的數據映射成數據集的關系表現。例如,如果你的XML文檔包含一個 Order元素列表,而它又有一個作為子元素的嵌套的LineItem元素,那么通常這個文檔被映射成關系表現中的Orders和LineItems數據表。這種映射的目的與OpenXML使用Xpath查詢構造XML文檔上的關系視圖的方法的目的是一樣的。但是與使用Xpath規范不同,數據集有自己的映射數據的方式。

  數據集使用XML大綱定義(XSD)大綱把數據從XML文檔映射到數據集的關系數據緩存中。數據集為你提供了指定映射XML數據的大綱的兩種方法。首先,你可以引用一個定義了XML文檔中使用的元素,屬性和關系的XSD大綱。另一種方法是,你可以直接從文檔的結構中推理大綱。換句話說,數據集可以通過檢查XML文檔的結構和內容建立大綱。

  當你引用XSD大綱的時候,數據集使用這個大綱中定義的元素、屬性與元素之間的關系來構造關系數據緩存中的數據表、數據列和數據關系,你可以使用這個數據緩存存儲被映射的XML數據。我談到關系數據緩存中的結構或大綱的時候,一般把它稱為數據緩存的形式。當數據集處理大綱的時候,它會應用一組規則,這種規則與映射大綱中沒有指定注解時Updategrams 和XML Bulk Load使用的默認映射規則相似,數據集使用這種規則建立數據集用于存儲被映射的XML數據的表。

  數據集的映射規則概述如下:

  • 復合元素--即包含其它元素或屬性的元素--被映射成表。
  • 屬性和簡單值(simple-valued)子元素--只包含數據,不包含其它元素或屬性的元素--被映射成列。
  • 數據類型從XSD類型映射為.NET類型。 

  推理(Inference)是一種快速、方便的把XML文檔載入數據集的方法。表、列和關系都是"自我測量"(introspection)自動建立的,"自我測量"是數據集檢查XML文檔的結構和內容的過程。盡管使用推理明顯減少了你的編程負擔,但是它也給你的實現帶來了不可預測性,因為對 XML文檔的很小的改動可能引起數據集建立不同形式的表。這些形式的改變可能引起你的應用程序意外中斷。因此,我推薦你一般為應用程序引用一個大綱,建立原型的時候限制推理的使用。

  現在讓我們看一看如何使用大綱建立一個可用于更新SQL Server數據庫的客戶端數據集數據緩存的例子。 

映射XML訂單

  假定你在編寫一個接受用戶訂單的應用程序,訂單是XML格式的,它的XSD 大綱如1定義。該大綱定義了三種復合類型,分別提供訂單的客戶數據、訂單數據和線性數據項。一個頂層Customer元素定義了XML文檔的根。這個封閉的系統定義了元素之間的關系: Order元素包含了一個LineItem元素,Customer元素包含一個Order元素。2顯示了符合1定義的大綱的一個XML文檔實例。

1:XSD大綱

<?xml version="1.0" encoding="utf-8"?><xs:schema targetNamespace="urn:Sep2003Example"elementFormDefault="qualified"xmlns="urn:Sep2003Example"xmlns:xs="http://www.w3.org/2001/XMLSchema";>  <xs:complexType name="OrderType"> <xs:sequence><xs:element name="OrderID" type="xs:integer"/><xs:element name="LineItem" type="LineItemType"/> </xs:sequence></xs:complexType><xs:complexType name="LineItemType"> <xs:sequence><xs:element name="ProductID" type="xs:int"/><xs:element name="Quantity" type="xs:int"/><xs:element name="UnitPrice" type="xs:decimal"/> </xs:sequence></xs:complexType><xs:complexType name="CustomerType"> <xs:sequence> <xs:element name="CustomerID" type="xs:string"/><xs:element name="Order" type="OrderType"/> </xs:sequence></xs:complexType><xs:element name="Customer" type="CustomerType"></xs:element></xs:schema>

NET技術淺談如何使用.NET存儲XML數據,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 麻豆一区二区免费播放网站 | 秋霞电影在线观看午夜伦 | 九九在线中文字幕无码 | 香蕉免费高清完整 | 麻豆国产成人AV在线 | 亚洲精品午夜VA久久成人 | 国产精品久久久久久久久齐齐 | 国产 亚洲 中文字幕 在线 | 好男人免费观看在线高清WWW | 扒开小处30p | 国产成A人片在线观看 | 99热国产这里只有精品9九 | adc影院欢迎您大驾光临入口 | 妈妈的朋友6未删减版完整在线 | 思思99精品国产自在现线 | 天天日免费观看视频一1 | 国产精品久免费的黄网站 | 亚洲精品久久久久久偷窥 | 色翁荡熄月月 | 欧美末成年videos丨 | 亚洲中字幕永久在线观看 | 一本道在线综合久久88 | 国产精品v片在线观看不卡 国产精品v欧美精品v日韩 | 美妇教师双飞后菊 | 男人脱女人衣服吃奶视频 | 亚洲日本国产综合高清 | 欧美中文字幕一区二区三区 | 99视频在线看观免费 | 99精品国产在热久久 | 精品久久久久久无码人妻国产馆 | 精品三级久久久久电影网1 精品日韩视频 | 欧美日韩精品不卡在线观看 | 国产成人一区免费观看 | 东莞桑拿美女 | 国产精品永久免费视频观看 | 成人精品视频网站 | 亚洲裸舞 hd | ⅹxx日本护土 | 揉抓捏打抽插射免费视频 | 成人免费毛片观看 | 91视频18 |