xml教程_第1頁
已閱讀1頁,還剩78頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、XML Web Service開發(fā),王曉光Mail: skyofking@126.comMSN:mlconline@msn.com,概述,XML基礎知識XML Web Service體系結構XML Web Service基礎技術 使用XML Web Service部署和發(fā)布XML Web Service XML Web Service安全 XML Web Service設計,XML基礎知識,XML 基礎 XML 編

2、寫XML 查詢XML 序列化,XML文檔的組成, Mercury Venus ,處理指令,根元素,,子元素,注釋,屬性,內容,格式正確的XML,規(guī)范的XML文件是嚴格按照W3C標準生成的當遇到語法錯誤時XML處理器會停止工作,,22,22,XML 處理器,應用程序,規(guī)范的XML,不規(guī)范的XML,,報告錯誤,Error!,22,使用IE瀏覽器打開一個規(guī)范的XML文件,可以點擊元素前面

3、的符號展開或合并信息,一種不規(guī)范的XML文檔, Mercury Venus ,把小寫的“p”寫為大寫的“P”,不規(guī)范的XML文件不能正確顯示,報告出錯的具體位置,元素規(guī)則,名字中不能包含空格名字不能以數字或標點符號開頭名字不能以任何大小寫的xml開頭左尖括號(<)后不可以有空格起始和結束標簽的大小寫必須一致XML文件中出現的第一個元素是根元素根元素必須有完整的起始和結束

4、標簽所有的子元素必須嵌套在一個根元素中嵌套元素不可以相互重疊子元素如果內容為空可以縮寫標簽,,, content ,課堂討論 XML元素的常見錯誤,11testTom…Earth,名字中間有空格,名字以數字開頭,名字XML開頭,尖括號后有空格,首尾標簽大小寫不一致,元素發(fā)生嵌套重疊, Security Framework ,第一個根元素,第二個根元素,

5、課堂討論 XML元素的常見錯誤,,打開練習文件elements.xml,,,課堂練習 使用IE瀏覽器糾正XML文件元素錯誤,用IE瀏覽器調試并糾正所有錯誤,,,屬性規(guī)則,屬性可以在起始標簽和處理指令之間聲明多個屬性之間使用空格分隔每條屬性包含屬性名和屬性值兩個部分一個元素中不能有重名的屬性在同一個XML文件中不同元素中屬性名可以重用屬性名不可以包含空格賦值時可以使用單引號或雙引號,Willow,屬性名,,屬性值,,選

6、擇XML元素還是屬性,元素用于封裝數據,而屬性通常用于提供有關元素的伴隨信息,而不是封裝原始數據本身當信息需要簡單類型的數據并且存在以下情況時,使用屬性信息需要默認值或固定值 信息需要的數據是現有元素的元數據 如果 XML 文件的大小很重要,那么屬性所需的字節(jié)數往往比元素要少,,XML屬性的常見錯誤,1…,屬性重名,屬性名中間有空格,打開練習文件attributes.xml,,課堂練習 使用IE瀏覽器糾正XML文件屬性

7、錯誤,用IE瀏覽器調試并糾正所有錯誤,,,注釋,注釋不能嵌套在標簽中只有在注釋的開始和結尾可以使用雙短橫三短橫只能在注釋的開頭使用而不能用在結尾處,>,,,,,,規(guī)范,,,,不規(guī)范,,,,保留字符與其對應的實體引用,設計XML詞匯表,XML詞匯表的定義創(chuàng)建XML詞匯表指導方針演示 XML詞匯表比較,XML詞匯表的定義,問題提出:兩個XML文件很難合并解決方案:相關的XML文件采用相同的結構、元素名稱和

8、大小寫方案, Goo, Glob,+,=, Goo Glob, Goo, Glob,+,= ?,創(chuàng)建XML詞匯表指導方針,判斷是否已有XML架構文件如果已有XML架構文件,不用再定義詞匯表使XML文件更加易讀易懂 用首字母大寫格式來定義元素和屬性使用PASCAL命名慣例盡量避免縮寫縮寫反而會使文件可讀性降低,,比較兩種XML的文件, 2002-07-24T22:39:55Z 20

9、02-08-10T16:13:07Z Microsoft Corporation 10.2625 ,請比較這兩個文件, 2002-07-24T22:39:55Z 2002-08-10T16:13:07Z Microsoft Corporation 10.2625 ,演示 XML詞匯表比較,,打開相關的三個練習文件,,比較源文件的可讀性,,命名空間,命名空間的定義使用缺省命名空間使用顯式命名空間

10、命名空間的統(tǒng)一資源定義URI選擇命名空間URI指導方針,命名空間的定義,XML 命名空間將 XML 文檔中的元素和屬性名稱與自定義和預定義的 URI 關聯起來。為命名空間 URI 定義的前綴用來限定 XML 數據中的元素和屬性的名稱以實現此關聯使用命名空間可以有效防止在合并多個XML源文件時發(fā)生名稱混淆,,不使用命名空間時存在的問題,合并前狀態(tài)合并后狀態(tài),Jane DoeDeveloper

11、The Joshua TreeU2,Jane DoeDeveloperThe Joshua TreeU2,使用缺省命名空間,缺省命名空間用URI關聯所有的元素和子元素使用缺省命名空間使不同的XML數據源合并后比較容易理解,這種狀態(tài)下如果不修改XML的結構則不會發(fā)生名字混淆, Jane Doe Developer The Joshua Tree

12、 U2 ,這些元素屬于 http://hrweb 命名空間,這些元素屬于http://market 命名空間,},},,缺省命名空間的語法,ElementContent,顯式命名空間的使用, Jane Doe Developer The Joshua Tree U2,使用顯式命名空間把兩個分屬不同命名空間的XML源文件進行合并,2.3.3 使用顯式命名空間,實驗 設計XML詞匯表,用規(guī)范化的XML文件來

13、表示數據設計XML詞匯表,,生成XML文檔概述編寫XML生成帶命名空間的XML控制XML格式和轉換XML,XML 編寫,,生成XML文檔的原因,需要將不同的數據格式轉化為XML格式常見的數據格式SQL Server 數據庫中的表OLE DB數據源電子數據交換格式(EDI),4.1.1 生成XML文檔的原因,生成XML文檔的原因,操作系統(tǒng)和應用程序會以XML格式保存用戶信息.NET的應用程序以XML格式保存配置信息A

14、SP.NET應用程序的配置文件Windows應用程序的配置文件,4.1.1 生成XML文檔的原因,編寫XML文檔的常用方法,使用 XmlTextWriter 類提供的方法該編輯器提供快速、非緩存和只向前的方法,該方法生成包含 XML 數據(這些數據符合 XML 1.0 和 XML 命名空間的規(guī)定)的流或文件 使用 XmlDocument 類提供的方法該類實現了 W3C 文檔對象模型 (DOM) 級別 1 核心(Level 1

15、Core)和核心 DOM 級別 2(Core DOM Level 2)。DOM 是 XML 文檔在內存中(緩存)的樹狀表示形式,允許對該文檔進行導航和編輯,4.1.1 生成XML文檔的原因,快速編寫XML文檔非緩存只向前,XmlTextWriter類,XmlTextWriter從 XmlWriter繼承, ,4.1.2 XmlTextWriter類,XmlTextWriter類能夠實現的功能,控制是否支持命名空間編寫

16、規(guī)范化的XML文檔內部采用 base64 和 BinHex 的編碼方式輸出文本使用 WriteState 屬性控制輸出過程 將多個數據源寫入一個輸出流關閉輸出流,生成文檔,4.1.2 XmlTextWriter類,XmlTextWriter 類不能實現的功能,檢查元素和屬性中的非法字符檢查Unicode字符是否符合編碼要求檢查是否有重名屬性檢查DOCTYPE節(jié)點的標示符根據架構驗證XML數據,4.1.2 XmlTex

17、tWriter類,XML編寫過程,XmlTextWriter編寫XML文檔,CSV file,ADO.NET,XmlConvert 類更正所有錯誤,預處理前     預處理后, coffee mug 11234 7.99 tea infuser 45256 3.99,OLE DB,Stream,4.1.3 XML編寫過程,編寫XML,演示 編寫XML文檔創(chuàng)建 XmlTextWr

18、iter 對象編寫XML文檔的根元素編寫元素編寫屬性編寫處理指令、注釋和CDATA課堂練習 從文本文件編寫XML課堂練習 編寫XML內容和節(jié)點,4.2 編寫XML,,演示 編寫XML文檔,,XmlTextWriter 類構造函數,XmlTextWriter類重載了三個構造函數public XmlTextWriter(string filename, System.Text.Encoding enco

19、ding)public XmlTextWriter(System.IO.TextWriter w)public XmlTextWriter(System.IO.Stream w, System.Text.Encoding encoding),4.2.1 演示 編寫XML文檔,創(chuàng)建 XmlTextWriter 對象,在構造XmlTextWriter對象時設置如下參數類型為TextWriter、Stream或String的參數編

20、碼類型可以是ASCII、UTF-7、UTF-8或 UnicodeXML文檔的縮進格式設置,' Visual BasicDim BookWriter As New XmlTextWriter( _"\catalog\books.xml", Encoding.UTF7)BookWriter.Formatting = Formatting.Indented// Visual C#XmlTextWri

21、ter BookWriter = new XmlTextWriter(@"\catalog\books.xml", Encoding.UTF7);BookWriter.Formatting = Formatting.Indented;,4.2.2 創(chuàng)建 XmlTextWriter 對象,編寫XML文檔的根元素,規(guī)范化的 XML 文檔必須有一個 XML 的聲明和一個根元素使用 WriteStartDocumen

22、t()方法 和 WriteEndDocument() 方法創(chuàng)建 XML 聲明使用 WriteStartElement() 方法和 WriteEndElement() 方法創(chuàng)建根元素,,XML聲明,根元素,Visual Basic 示例,C# 示例,4.2.3 編寫XML文檔的根元素,編寫XML文檔的根元素代碼示例,// C#代碼:XmlTextWriter BookWriter = new XmlTextWriter(@&

23、quot;\catalog\books.xml", Encoding.UTF8);BookWriter.Formatting = Formatting.Indented;BookWriter.WriteStartDocument();BookWriter.WriteStartElement("books");// 其他元素BookWriter.WriteEndElement();BookWrit

24、er.WriteEndDocument();BookWriter.Close();,4.2.3 編寫XML文檔的根元素,編寫元素,使用WriteElementString()方法創(chuàng)建不包含子元素和屬性的元素使用WriteStartElement()和WriteEndElement() 方法創(chuàng)建含有下級子元素和屬性的元素,BookWriter.WriteElementString("price", &quo

25、t;19.95");,BookWriter.WriteStartElement("book");BookWriter.WriteElementString("price", "19.95");BookWriter.WriteEndElement();,19.95,19.95,4.2.4 編寫元素,單步編寫屬性,單步編寫屬性值時使用 WriteAttribu

26、teString()方法 編寫的XML,,BookWriter.WriteStartElement("book");BookWriter.WriteAttributeString("price", "19.95");BookWriter.WriteEndElement();,4.2.5 編寫屬性,多步編寫屬性,多步編寫屬性值時使用WriteStartA

27、ttribute() 和   WriteEndAttribute()方法編寫的XML,BookWriter.WriteStartElement("book");BookWriter.WriteStartAttribute("price", "");BookWriter.WriteString("19.95");BookWriter.Writ

28、eEndAttribute();BookWriter.WriteEndElement();,,Visual Basic 示例,C# 示例,4.2.5 編寫屬性,,課堂練習 編寫XML內容和節(jié)點,創(chuàng)建 Windows 應用程序來編寫XML文檔,,4.2.8 課堂練習 編寫XML內容和節(jié)點,生成帶有命名空間的XML文檔,創(chuàng)建帶有命名空間的XML部件的原因生成帶命名空間的元素生成帶命名空間的屬性,4.3 生成帶有命名空間的

29、XML文檔,創(chuàng)建帶有命名空間的XML部件的原因,命名空間能夠對元素進行分組在合并多個XML數據源時,使用命名空間可以有效防止命名沖突, Jane Doe Developer Espresso Maker Not specified,4.3.1 創(chuàng)建帶有命名空間的XML部件的原因,生成帶命名空間的元素,使用WriteElementString()方法或 WriteStartElement()方法編寫帶命名空間的元素,B

30、ookWriter.WriteStartElement("hr", "Name", "http://hrweb");BookWriter.WriteString("Nancy Davolio");BookWriter.WriteEndElement();,Nancy Davolio,C# 示例,4.3.2 生成帶命名空間的元素,生成帶命名空間的屬性,

31、使用WriteAttributeString()方法,BookWriter.WriteAttributeString("bk", "ISBN", "urn:samples", " 1-861003-78 ");,hardcover,C# 示例,4.3.3 生成帶命名空間的屬性,控制XML文檔的格式和預處理XML文檔,設置XML格式控制X

32、ML的文本轉換XML代碼查看 從數據庫生成XML,4.4 控制XML文檔的格式和預處理XML文檔,BookWriter.IndentChar = (char)9;,BookWriter.Indentation = 2;,BookWriter.QuoteChar = (char)39;,BookWriter.Formatting = Formatting.Indented;,設置XML格式,設置用tab鍵縮進啟用縮進設置縮進

33、的級別將屬性值括起來的字符設置為單引號,4.4.1 設置XML格式,控制XML的文本,輸出空白區(qū)域編寫不使用轉義碼的元素內容編寫使用轉義碼的元素內容,BookWriter.WriteRaw("Cats & Dogs");,BookWriter.WriteWhiteSpace(" ");,BookWriter.WriteStartElement("myRoo

34、t");BookWriter.WriteString("&lt;,4.4.2 控制XML的文本,轉換XML,轉換XML的元素名字對XmlConvert.EncodeName和 XmlConvert.Encoded使用本地名字將整型值轉換為字符串,BookWriter.WriteStartElement(XmlConvert.EncodeName("First Name")

35、);,,Int32 vInt32 = -2147483648;xtw.WriteElementString("TestInt32", XmlConvert.ToString(vInt32));,-2147483648,4.4.3 轉換XML,,實驗 編寫XML文檔,練習 創(chuàng)建一個用于生成XML文檔的 XML Web Service,,XPath簡介,使用XPath查詢XML的原因

36、XPath的節(jié)點類型 定位路徑 定位路徑語法,5.1 XPath簡介,使用XPath查詢XML的原因,使用XPath可以完成下列任務查詢篩選 匯總XPath:XML 與Transact-SQL:SQL Server的對比 Transact-SQL是操作關系數據庫的標準語言 XPath是查詢XML文檔的標準語言,可以在層次化的樹狀節(jié)點中搜索定位,5.1.1 使用XPath查詢XML的原因,XPath的常見問題,XPat

37、h是哪個組織的標準?當前XPath標準的狀態(tài)是什么?XPath主要功能是什么?XPath與DOM在查詢XML方面的功能有什么不同?XPath的使用場合是什么?,5.1.1 使用XPath查詢XML的原因,XPath使用的術語,表達式節(jié)點軸函數和變量定位路徑結果集,5.1.1 使用XPath查詢XML的原因,XPath的使用場合,查詢遍歷滿足某個條件的所有節(jié)點定位通常與DOM配合使用,先用XPath定位節(jié)點,然

38、后用DOM對象修改信息篩選通常與XSLT配合使用,先用XPath篩選,然后再對結果用XSLT轉換格式匯總使用XPath表達式求匯總值,5.1.1 使用XPath查詢XML的原因,,XPath的節(jié)點類型, Beverages,根 Root 元素 Element屬性Attribute命名空間 Namespace處理指令 ProcessingInstruction注釋 Comment文本內容 Text空白

39、Whitespace,5.1.2 XPath的節(jié)點類型,識別XPath的節(jié)點類型, CPU,根,命名空間,處理指令,注釋,元素,屬性,空白,文本內容,5.1.2 XPath的節(jié)點類型,,演示 使用XPath查詢XML,,5.2.7 演示 使用XPath查詢XML,,XML序列化使用 XmlSerializer類序列化對象控制XML序列化,XML 序列化,,XML序

40、列化,XML序列化使用XML序列化的原因XML序列化與SOAP的關系XML序列化的局限性從對象類序列化XML架構課堂練習 使用XSD.exe 生成架構,10.1 XML序列化,XML序列化,序列化用于保存和傳輸對象兩種序列化類型二進制格式XML格式XML序列化把對象的公共屬性和字段轉換為XMLXML序列化類可以用來控制XML數據的結構,10.1.1 XML序列化,兩種序列化類型,10.1.1 XML序列化,

41、對象序列化舉例,類聲明XML序列化結果,public class PurchaseOrder {public DateTime PODate;public Int32 PONumber;public Double POTotal;},01/01/20021234599.99,10.1.1 XML序列化,使用XML序列化的原因,在應用程序之間傳輸對象數據在Internet中傳輸數據把XML數據導

42、入到應用程序根據預設的架構生成XML文檔根據預設的架構解析XML文檔為XML Web service 生成SOAP消息保存對象狀態(tài),10.1.2 使用XML序列化的原因,XML序列化與SOAP的關系,10.1.3 XML序列化與SOAP的關系,XML序列化的局限性,XML序列化的局限性只能序列化公共屬性和字段值只能序列化類的形狀信息和類所包含的數據不能序列化方法和索引器類必須擁有缺省構造函數并不是所有的XSD數據類

43、型都有對應的.NET數據類型使用二進制序列化和SOAP序列化解決XML序列化的局限性,10.1.4 XML序列化的局限性,.NET Framework 類是對象的藍圖XML架構是XML文檔的藍圖XSD.exe命令行工具可在.NET Framework類和XML架構之間實現轉換,從對象類序列化XML架構,,,,Public class Invoice { // property and // field de

44、finitions ...},,,,,10.1.5 從對象類序列化XML架構,XSD.EXE 的語法,xsd.exe .xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/uri:]xsd.exe .dll|.exe [/outputdir:] [/type: [...]]xsd.exe .xml [/outputdir:]xsd.exe .xdr [/outputdir:],10

45、.1.5 從對象類序列化XML架構,XSD.EXE可以處理的文件,10.1.5 從對象類序列化XML架構,XSD.EXE應用舉例,例1例2例3,xsd.exe myschema.xsd /l:CS /c,xsd.exe ExpenseReport.dll /type:ExpenseReport,xsd.exe Books.xml,10.1.5 從對象類序列化XML架構,,課堂練習 使用XSD.exe生成架構,從XM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論