版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、XML Web Service開發(fā),王曉光Mail: skyofking@126.comMSN:mlconline@msn.com,概述,XML基礎(chǔ)知識(shí)XML Web Service體系結(jié)構(gòu)XML Web Service基礎(chǔ)技術(shù) 使用XML Web Service部署和發(fā)布XML Web Service XML Web Service安全 XML Web Service設(shè)計(jì),XML基礎(chǔ)知識(shí),XML 基礎(chǔ) XML 編
2、寫XML 查詢XML 序列化,XML文檔的組成, Mercury Venus ,處理指令,根元素,,子元素,注釋,屬性,內(nèi)容,格式正確的XML,規(guī)范的XML文件是嚴(yán)格按照W3C標(biāo)準(zhǔn)生成的當(dāng)遇到語法錯(cuò)誤時(shí)XML處理器會(huì)停止工作,,22,22,XML 處理器,應(yīng)用程序,規(guī)范的XML,不規(guī)范的XML,,報(bào)告錯(cuò)誤,Error!,22,使用IE瀏覽器打開一個(gè)規(guī)范的XML文件,可以點(diǎn)擊元素前面
3、的符號(hào)展開或合并信息,一種不規(guī)范的XML文檔, Mercury Venus ,把小寫的“p”寫為大寫的“P”,不規(guī)范的XML文件不能正確顯示,報(bào)告出錯(cuò)的具體位置,元素規(guī)則,名字中不能包含空格名字不能以數(shù)字或標(biāo)點(diǎn)符號(hào)開頭名字不能以任何大小寫的xml開頭左尖括號(hào)(<)后不可以有空格起始和結(jié)束標(biāo)簽的大小寫必須一致XML文件中出現(xiàn)的第一個(gè)元素是根元素根元素必須有完整的起始和結(jié)束
4、標(biāo)簽所有的子元素必須嵌套在一個(gè)根元素中嵌套元素不可以相互重疊子元素如果內(nèi)容為空可以縮寫標(biāo)簽,,, content ,課堂討論 XML元素的常見錯(cuò)誤,11testTom…Earth,名字中間有空格,名字以數(shù)字開頭,名字XML開頭,尖括號(hào)后有空格,首尾標(biāo)簽大小寫不一致,元素發(fā)生嵌套重疊, Security Framework ,第一個(gè)根元素,第二個(gè)根元素,
5、課堂討論 XML元素的常見錯(cuò)誤,,打開練習(xí)文件elements.xml,,,課堂練習(xí) 使用IE瀏覽器糾正XML文件元素錯(cuò)誤,用IE瀏覽器調(diào)試并糾正所有錯(cuò)誤,,,屬性規(guī)則,屬性可以在起始標(biāo)簽和處理指令之間聲明多個(gè)屬性之間使用空格分隔每條屬性包含屬性名和屬性值兩個(gè)部分一個(gè)元素中不能有重名的屬性在同一個(gè)XML文件中不同元素中屬性名可以重用屬性名不可以包含空格賦值時(shí)可以使用單引號(hào)或雙引號(hào),Willow,屬性名,,屬性值,,選
6、擇XML元素還是屬性,元素用于封裝數(shù)據(jù),而屬性通常用于提供有關(guān)元素的伴隨信息,而不是封裝原始數(shù)據(jù)本身當(dāng)信息需要簡單類型的數(shù)據(jù)并且存在以下情況時(shí),使用屬性信息需要默認(rèn)值或固定值 信息需要的數(shù)據(jù)是現(xiàn)有元素的元數(shù)據(jù) 如果 XML 文件的大小很重要,那么屬性所需的字節(jié)數(shù)往往比元素要少,,XML屬性的常見錯(cuò)誤,1…,屬性重名,屬性名中間有空格,打開練習(xí)文件attributes.xml,,課堂練習(xí) 使用IE瀏覽器糾正XML文件屬性
7、錯(cuò)誤,用IE瀏覽器調(diào)試并糾正所有錯(cuò)誤,,,注釋,注釋不能嵌套在標(biāo)簽中只有在注釋的開始和結(jié)尾可以使用雙短橫三短橫只能在注釋的開頭使用而不能用在結(jié)尾處,>,,,,,,規(guī)范,,,,不規(guī)范,,,,保留字符與其對(duì)應(yīng)的實(shí)體引用,設(shè)計(jì)XML詞匯表,XML詞匯表的定義創(chuàng)建XML詞匯表指導(dǎo)方針演示 XML詞匯表比較,XML詞匯表的定義,問題提出:兩個(gè)XML文件很難合并解決方案:相關(guān)的XML文件采用相同的結(jié)構(gòu)、元素名稱和
8、大小寫方案, Goo, Glob,+,=, Goo Glob, Goo, Glob,+,= ?,創(chuàng)建XML詞匯表指導(dǎo)方針,判斷是否已有XML架構(gòu)文件如果已有XML架構(gòu)文件,不用再定義詞匯表使XML文件更加易讀易懂 用首字母大寫格式來定義元素和屬性使用PASCAL命名慣例盡量避免縮寫縮寫反而會(huì)使文件可讀性降低,,比較兩種XML的文件, 2002-07-24T22:39:55Z 20
9、02-08-10T16:13:07Z Microsoft Corporation 10.2625 ,請(qǐng)比較這兩個(gè)文件, 2002-07-24T22:39:55Z 2002-08-10T16:13:07Z Microsoft Corporation 10.2625 ,演示 XML詞匯表比較,,打開相關(guān)的三個(gè)練習(xí)文件,,比較源文件的可讀性,,命名空間,命名空間的定義使用缺省命名空間使用顯式命名空間
10、命名空間的統(tǒng)一資源定義URI選擇命名空間URI指導(dǎo)方針,命名空間的定義,XML 命名空間將 XML 文檔中的元素和屬性名稱與自定義和預(yù)定義的 URI 關(guān)聯(lián)起來。為命名空間 URI 定義的前綴用來限定 XML 數(shù)據(jù)中的元素和屬性的名稱以實(shí)現(xiàn)此關(guān)聯(lián)使用命名空間可以有效防止在合并多個(gè)XML源文件時(shí)發(fā)生名稱混淆,,不使用命名空間時(shí)存在的問題,合并前狀態(tài)合并后狀態(tài),Jane DoeDeveloper
11、The Joshua TreeU2,Jane DoeDeveloperThe Joshua TreeU2,使用缺省命名空間,缺省命名空間用URI關(guān)聯(lián)所有的元素和子元素使用缺省命名空間使不同的XML數(shù)據(jù)源合并后比較容易理解,這種狀態(tài)下如果不修改XML的結(jié)構(gòu)則不會(huì)發(fā)生名字混淆, Jane Doe Developer The Joshua Tree
12、 U2 ,這些元素屬于 http://hrweb 命名空間,這些元素屬于http://market 命名空間,},},,缺省命名空間的語法,ElementContent,顯式命名空間的使用, Jane Doe Developer The Joshua Tree U2,使用顯式命名空間把兩個(gè)分屬不同命名空間的XML源文件進(jìn)行合并,2.3.3 使用顯式命名空間,實(shí)驗(yàn) 設(shè)計(jì)XML詞匯表,用規(guī)范化的XML文件來
13、表示數(shù)據(jù)設(shè)計(jì)XML詞匯表,,生成XML文檔概述編寫XML生成帶命名空間的XML控制XML格式和轉(zhuǎn)換XML,XML 編寫,,生成XML文檔的原因,需要將不同的數(shù)據(jù)格式轉(zhuǎn)化為XML格式常見的數(shù)據(jù)格式SQL Server 數(shù)據(jù)庫中的表OLE DB數(shù)據(jù)源電子數(shù)據(jù)交換格式(EDI),4.1.1 生成XML文檔的原因,生成XML文檔的原因,操作系統(tǒng)和應(yīng)用程序會(huì)以XML格式保存用戶信息.NET的應(yīng)用程序以XML格式保存配置信息A
14、SP.NET應(yīng)用程序的配置文件Windows應(yīng)用程序的配置文件,4.1.1 生成XML文檔的原因,編寫XML文檔的常用方法,使用 XmlTextWriter 類提供的方法該編輯器提供快速、非緩存和只向前的方法,該方法生成包含 XML 數(shù)據(jù)(這些數(shù)據(jù)符合 XML 1.0 和 XML 命名空間的規(guī)定)的流或文件 使用 XmlDocument 類提供的方法該類實(shí)現(xiàn)了 W3C 文檔對(duì)象模型 (DOM) 級(jí)別 1 核心(Level 1
15、Core)和核心 DOM 級(jí)別 2(Core DOM Level 2)。DOM 是 XML 文檔在內(nèi)存中(緩存)的樹狀表示形式,允許對(duì)該文檔進(jìn)行導(dǎo)航和編輯,4.1.1 生成XML文檔的原因,快速編寫XML文檔非緩存只向前,XmlTextWriter類,XmlTextWriter從 XmlWriter繼承, ,4.1.2 XmlTextWriter類,XmlTextWriter類能夠?qū)崿F(xiàn)的功能,控制是否支持命名空間編寫
16、規(guī)范化的XML文檔內(nèi)部采用 base64 和 BinHex 的編碼方式輸出文本使用 WriteState 屬性控制輸出過程 將多個(gè)數(shù)據(jù)源寫入一個(gè)輸出流關(guān)閉輸出流,生成文檔,4.1.2 XmlTextWriter類,XmlTextWriter 類不能實(shí)現(xiàn)的功能,檢查元素和屬性中的非法字符檢查Unicode字符是否符合編碼要求檢查是否有重名屬性檢查DOCTYPE節(jié)點(diǎn)的標(biāo)示符根據(jù)架構(gòu)驗(yàn)證XML數(shù)據(jù),4.1.2 XmlTex
17、tWriter類,XML編寫過程,XmlTextWriter編寫XML文檔,CSV file,ADO.NET,XmlConvert 類更正所有錯(cuò)誤,預(yù)處理前 預(yù)處理后, coffee mug 11234 7.99 tea infuser 45256 3.99,OLE DB,Stream,4.1.3 XML編寫過程,編寫XML,演示 編寫XML文檔創(chuàng)建 XmlTextWr
18、iter 對(duì)象編寫XML文檔的根元素編寫元素編寫屬性編寫處理指令、注釋和CDATA課堂練習(xí) 從文本文件編寫XML課堂練習(xí) 編寫XML內(nèi)容和節(jié)點(diǎn),4.2 編寫XML,,演示 編寫XML文檔,,XmlTextWriter 類構(gòu)造函數(shù),XmlTextWriter類重載了三個(gè)構(gòu)造函數(shù)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 對(duì)象,在構(gòu)造XmlTextWriter對(duì)象時(shí)設(shè)置如下參數(shù)類型為TextWriter、Stream或String的參數(shù)編
20、碼類型可以是ASCII、UTF-7、UTF-8或 UnicodeXML文檔的縮進(jìn)格式設(shè)置,' 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 對(duì)象,編寫XML文檔的根元素,規(guī)范化的 XML 文檔必須有一個(gè) XML 的聲明和一個(gè)根元素使用 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)建含有下級(jí)子元素和屬性的元素,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 編寫元素,單步編寫屬性,單步編寫屬性值時(shí)使用 WriteAttribu
26、teString()方法 編寫的XML,,BookWriter.WriteStartElement("book");BookWriter.WriteAttributeString("price", "19.95");BookWriter.WriteEndElement();,4.2.5 編寫屬性,多步編寫屬性,多步編寫屬性值時(shí)使用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 編寫屬性,,課堂練習(xí) 編寫XML內(nèi)容和節(jié)點(diǎn),創(chuàng)建 Windows 應(yīng)用程序來編寫XML文檔,,4.2.8 課堂練習(xí) 編寫XML內(nèi)容和節(jié)點(diǎn),生成帶有命名空間的XML文檔,創(chuàng)建帶有命名空間的XML部件的原因生成帶命名空間的元素生成帶命名空間的屬性,4.3 生成帶有命名空間的
29、XML文檔,創(chuàng)建帶有命名空間的XML部件的原因,命名空間能夠?qū)υ剡M(jìn)行分組在合并多個(gè)XML數(shù)據(jù)源時(shí),使用命名空間可以有效防止命名沖突, 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文檔的格式和預(yù)處理XML文檔,設(shè)置XML格式控制X
32、ML的文本轉(zhuǎn)換XML代碼查看 從數(shù)據(jù)庫生成XML,4.4 控制XML文檔的格式和預(yù)處理XML文檔,BookWriter.IndentChar = (char)9;,BookWriter.Indentation = 2;,BookWriter.QuoteChar = (char)39;,BookWriter.Formatting = Formatting.Indented;,設(shè)置XML格式,設(shè)置用tab鍵縮進(jìn)啟用縮進(jìn)設(shè)置縮進(jìn)
33、的級(jí)別將屬性值括起來的字符設(shè)置為單引號(hào),4.4.1 設(shè)置XML格式,控制XML的文本,輸出空白區(qū)域編寫不使用轉(zhuǎn)義碼的元素內(nèi)容編寫使用轉(zhuǎn)義碼的元素內(nèi)容,BookWriter.WriteRaw("Cats & Dogs");,BookWriter.WriteWhiteSpace(" ");,BookWriter.WriteStartElement("myRoo
34、t");BookWriter.WriteString("<,4.4.2 控制XML的文本,轉(zhuǎn)換XML,轉(zhuǎn)換XML的元素名字對(duì)XmlConvert.EncodeName和 XmlConvert.Encoded使用本地名字將整型值轉(zhuǎn)換為字符串,BookWriter.WriteStartElement(XmlConvert.EncodeName("First Name")
35、);,,Int32 vInt32 = -2147483648;xtw.WriteElementString("TestInt32", XmlConvert.ToString(vInt32));,-2147483648,4.4.3 轉(zhuǎn)換XML,,實(shí)驗(yàn) 編寫XML文檔,練習(xí) 創(chuàng)建一個(gè)用于生成XML文檔的 XML Web Service,,XPath簡介,使用XPath查詢XML的原因
36、XPath的節(jié)點(diǎn)類型 定位路徑 定位路徑語法,5.1 XPath簡介,使用XPath查詢XML的原因,使用XPath可以完成下列任務(wù)查詢篩選 匯總XPath:XML 與Transact-SQL:SQL Server的對(duì)比 Transact-SQL是操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 XPath是查詢XML文檔的標(biāo)準(zhǔn)語言,可以在層次化的樹狀節(jié)點(diǎn)中搜索定位,5.1.1 使用XPath查詢XML的原因,XPath的常見問題,XPat
37、h是哪個(gè)組織的標(biāo)準(zhǔn)?當(dāng)前XPath標(biāo)準(zhǔn)的狀態(tài)是什么?XPath主要功能是什么?XPath與DOM在查詢XML方面的功能有什么不同?XPath的使用場(chǎng)合是什么?,5.1.1 使用XPath查詢XML的原因,XPath使用的術(shù)語,表達(dá)式節(jié)點(diǎn)軸函數(shù)和變量定位路徑結(jié)果集,5.1.1 使用XPath查詢XML的原因,XPath的使用場(chǎng)合,查詢遍歷滿足某個(gè)條件的所有節(jié)點(diǎn)定位通常與DOM配合使用,先用XPath定位節(jié)點(diǎn),然
38、后用DOM對(duì)象修改信息篩選通常與XSLT配合使用,先用XPath篩選,然后再對(duì)結(jié)果用XSLT轉(zhuǎn)換格式匯總使用XPath表達(dá)式求匯總值,5.1.1 使用XPath查詢XML的原因,,XPath的節(jié)點(diǎn)類型, Beverages,根 Root 元素 Element屬性Attribute命名空間 Namespace處理指令 ProcessingInstruction注釋 Comment文本內(nèi)容 Text空白
39、Whitespace,5.1.2 XPath的節(jié)點(diǎn)類型,識(shí)別XPath的節(jié)點(diǎn)類型, CPU,根,命名空間,處理指令,注釋,元素,屬性,空白,文本內(nèi)容,5.1.2 XPath的節(jié)點(diǎn)類型,,演示 使用XPath查詢XML,,5.2.7 演示 使用XPath查詢XML,,XML序列化使用 XmlSerializer類序列化對(duì)象控制XML序列化,XML 序列化,,XML序
40、列化,XML序列化使用XML序列化的原因XML序列化與SOAP的關(guān)系XML序列化的局限性從對(duì)象類序列化XML架構(gòu)課堂練習(xí) 使用XSD.exe 生成架構(gòu),10.1 XML序列化,XML序列化,序列化用于保存和傳輸對(duì)象兩種序列化類型二進(jìn)制格式XML格式XML序列化把對(duì)象的公共屬性和字段轉(zhuǎn)換為XMLXML序列化類可以用來控制XML數(shù)據(jù)的結(jié)構(gòu),10.1.1 XML序列化,兩種序列化類型,10.1.1 XML序列化,
41、對(duì)象序列化舉例,類聲明XML序列化結(jié)果,public class PurchaseOrder {public DateTime PODate;public Int32 PONumber;public Double POTotal;},01/01/20021234599.99,10.1.1 XML序列化,使用XML序列化的原因,在應(yīng)用程序之間傳輸對(duì)象數(shù)據(jù)在Internet中傳輸數(shù)據(jù)把XML數(shù)據(jù)導(dǎo)
42、入到應(yīng)用程序根據(jù)預(yù)設(shè)的架構(gòu)生成XML文檔根據(jù)預(yù)設(shè)的架構(gòu)解析XML文檔為XML Web service 生成SOAP消息保存對(duì)象狀態(tài),10.1.2 使用XML序列化的原因,XML序列化與SOAP的關(guān)系,10.1.3 XML序列化與SOAP的關(guān)系,XML序列化的局限性,XML序列化的局限性只能序列化公共屬性和字段值只能序列化類的形狀信息和類所包含的數(shù)據(jù)不能序列化方法和索引器類必須擁有缺省構(gòu)造函數(shù)并不是所有的XSD數(shù)據(jù)類
43、型都有對(duì)應(yīng)的.NET數(shù)據(jù)類型使用二進(jìn)制序列化和SOAP序列化解決XML序列化的局限性,10.1.4 XML序列化的局限性,.NET Framework 類是對(duì)象的藍(lán)圖XML架構(gòu)是XML文檔的藍(lán)圖XSD.exe命令行工具可在.NET Framework類和XML架構(gòu)之間實(shí)現(xiàn)轉(zhuǎn)換,從對(duì)象類序列化XML架構(gòu),,,,Public class Invoice { // property and // field de
44、finitions ...},,,,,10.1.5 從對(duì)象類序列化XML架構(gòu),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 從對(duì)象類序列化XML架構(gòu),XSD.EXE可以處理的文件,10.1.5 從對(duì)象類序列化XML架構(gòu),XSD.EXE應(yīng)用舉例,例1例2例3,xsd.exe myschema.xsd /l:CS /c,xsd.exe ExpenseReport.dll /type:ExpenseReport,xsd.exe Books.xml,10.1.5 從對(duì)象類序列化XML架構(gòu),,課堂練習(xí) 使用XSD.exe生成架構(gòu),從XM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- xml編程開發(fā)教程
- xml入門經(jīng)典教程
- xml編程與應(yīng)用教程第二版上機(jī)答案
- xml基礎(chǔ)
- xml概述xml的術(shù)語和語法xsl簡介關(guān)于xml的幾點(diǎn)考慮
- XML及XML中間件的研究.pdf
- 基于XML Schema的XML函數(shù)依賴研究.pdf
- 基于XML的安全通信-XML Engine.pdf
- 動(dòng)畫 xml 元素
- 面向XML的安全中間件(XML加密).pdf
- xml.txt
- 《xml實(shí)用大全》
- 0302 xml簡介
- 0303 xml簡介
- XML安全平臺(tái)XML Engine的研究與實(shí)現(xiàn).pdf
- build.xml.txt
- xml課程設(shè)計(jì)
- -xml開發(fā)技術(shù)-試卷a
- trimblebusinesscenter教程(tbc教程)
- xml dom 入門指南
評(píng)論
0/150
提交評(píng)論