分享
分享赚钱 收藏 举报 版权申诉 / 78

类型第二十二章_C++_Builder上的XML应用.ppt

  • 上传人:myw993772
  • 文档编号:7256832
  • 上传时间:2019-05-11
  • 格式:PPT
  • 页数:78
  • 大小:1.21MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第二十二章_C++_Builder上的XML应用.ppt
    资源描述:

    1、第二十二章 C+ Builder上的 XML應用XML(eXtensible Markup Language)可擴展標示語言是最近興起的標示語言,由於使用方便而逐漸廣泛應用在資料的交換與表示上,因此, Borland在 C+ Builder 6上加入了對 XML的支援,讓一般使用者可以透過更簡便的方式來使用 XML格式的檔案,或是透過 XML檔案做些額外的應用。 大綱 21-1 XML簡介 21-2 XML基本存取元件的使用 21-3 使用 Data Binding輔助工具 21-4 MyBase個人資料庫 21-5 MyBase進階應用 22-1. XML簡介 XML是 eXtensible

    2、 Markup Language的縮寫,中文譯為 “可擴展標示語言 “或 “可延伸性標示語言 “,由 W3C(World Wide Web Consortium)所制定,並於 1998 年 2 月成為推薦規格,該語言和 HTML同為 SGML所衍伸出來的語言,而 SGML(全名為 Standard Generalized Markup Language)是國際標準組織 (ISO)於 1986年審核通過的一種文字及文件國際標準,不過卻因格式複雜、文件開發不易和解讀困難等缺點而一直無法廣泛被使用於企業界或是網路上,但簡化後的版本如 HTML和XML等卻被廣泛使用,其中 HTML成為網頁格式的標準而

    3、普遍使用在網路上,而 XML則繼 HTML後成為目前最受矚目的標記語言。 22-1. XML簡介 HTML因為簡單易學而廣泛被使用,但相對的也有其缺點而限制了它的使用彈性,因此當寬頻、無線網路環境逐漸成為主流時,它的困境也就越來越明顯了,底下為幾個 HTML的缺點:1. 文件內容與顯示格式無法分離,導致 HTML的內容無法有效的轉移到其他平台上,因為顯示格式的安排可能受限於使用的環境,如手機和PDA上由於螢幕大小的限制便無法像瀏覽器般顯示過多的美工排版與內容,而必須對排版方式做些修正,此外,傳統 HTML檔案亦無法作為顯示風格隨使用者不同而變的個人化網頁服務,但這些在 XML檔案下皆能輕易完成

    4、,如手機上使用的 WAP便是一種 XML檔案。22-1. XML簡介2. 固定標籤限制了使用彈性。 HTML的標籤決定於 W3C訂定的版本,也就是所有的標籤名稱在每一版本的 HTML規格中是固定的,如下圖即為 HTML的標準格式,並無法對標籤名稱進行修改,且每個標籤所允許的屬性亦是固定的,因此,這些固定名稱和屬性就限制了 HTML使用的彈性,譬如瀏覽器和手機在內容呈現上的定義可能不同,自然HTML定的標籤和屬性名稱對於手機來說就不一定適用。 22-1. XML簡介3. HTML文件主要著重在顯示格式的設定,而非文件內容的紀錄,因此並沒有完整的架構來紀錄文件的內容,但對於企業或是資料處理來說,文

    5、件的內容才是處理的重心,譬如對於一份訂單來說,企業所在意的並不是訂單有多漂亮,而是訂單的商品內容和數量,但從 HTML檔案中卻無法清楚的了解訂單的項目和數量,因此並不適合作為內容紀錄和資料處理的依據,更不能作為資料交換的依據,此外,結構過於鬆散亦增添企業內對 HTML檔案內容進行處理的困難,譬如 這個標籤需要對應的結尾標籤 ,但 卻不需要,而這沒有對稱性的架構卻大大增加處理的困難。 相對於上述 HTML所面臨的困境, XML檔皆找到合適的解決方案,而這正是 XML能興起的主因。22-1. XML簡介 XML具備底下幾個特性,而這些特性正式其優於 HTML的地方。 1. 允許使用者自訂標籤和屬性

    6、:也就是標籤和屬性名稱可以自訂,而不像 HTML般是固定的,此外,標籤和屬性名稱的大小寫是區別的。 2. 完整的階層架構:也就是 XML為一個 Well-Formed文件,而 Well-Formed文件的規格有二: 1) 所有的標籤名稱皆需要對應一個結尾標籤,如 標籤對應或當標籤間資料為空時以 代表起始標籤和結尾標籤,底下均為標準的標籤用法。 22-1. XML簡介2) 標籤和結尾標籤必須在同一階層,也就是所有的標籤以巢狀迴圈形式出現,內層的標籤其結尾標籤必定在內層出現,不允許在外層出現的情形,下面為正確範例和錯誤範例的比較。3. 任意階層數的巢狀結構:只要標籤和對應的結尾標籤符合巢狀形式出現

    7、,則並沒有限制每個標籤內所允許的階層數目,因此大大增加應用的彈性。4. 允許對檔案格式進行驗證:透過驗證檔案的指定,可對 XML內容進行驗證的動作,檢查各標籤內容是否被驗證檔案所允許,以確保檔案內容在編輯修改時能保持其一致性。 22-1. XML簡介 底下為一個基本的 XML檔案範例。在範例中,我們透過自訂標籤來儲存員工的基本資料。 22-1. XML簡介 從上面檔案中可看到一份 XML檔案根據內容用途可簡單劃分為四區:文件宣告區、文件型態定義區、排版樣式定義區和文件內容區,簡述如下: 文件宣告區: 文件宣告區為一份 XML文件所不可少的部分,其中的第一列必須宣告此文件為一個 XML檔案和指定

    8、其版本訊息,除此,還可額外指定其使用的編碼方式或是宣告是否有其他檔案配合使用,底下均為合法的XML宣告範例: 1. 最基本的 XML宣告22-1. XML簡介 指定 XML的編碼方式為 Big5繁體中文。 指定 XML的編碼方式外,還指定該 XML檔案為單獨存在,並沒有引用別的檔案內容。 此外,在基本的宣告之後,還可以選擇性的對文件型態和排版樣式進行定義,其中的文件型態用來規範 XML文件的內容,而排版樣式則定義 XML文件在顯示時的呈現方式。22-1. XML簡介 文件型態定義 前面曾經介紹 XML的優點在於能提供文件內容驗證的機制,而這個驗證的機制主要是透過對文件型態的定義來達成。該文件型

    9、態定義為一個 DTD(Document Type Definition)檔案,透過該檔案我們可以對XML文件進行如下的定義:1. 文件的階層架構。2. 標籤的內容和型態。3. 標籤屬性。22-1. XML簡介 底下為一個簡單的 DTD範例,在這個範例中我們對前面的myemployee.xml檔案的內容進行定義。myemployee.dtd檔案內容 22-1. XML簡介 上述 DTD檔案限定了 myemployee.xml檔案的文件型態如下 : Employee標籤可含有數個 Person子標籤。 Person標籤內含 Name、 EmpId、 Salary、 PhoneNo、 PhoExt和

    10、HireDate標籤,其中 PhoneNo標籤的數目至少一個,但其他標籤在Person標籤下只能出現一次。 Name、 EmpId、 Salary、 PhoneNo、 PhoExt和 HireDate標籤內容由可被剖析的文字資料所構成,其中 PCDATA為 Parser Character Data的縮寫。 在驗證過程中,若檔案內容不符合 DTD所指定的規則時,將產生錯誤的訊息。 22-1. XML簡介 除了透過 DTD檔案進行驗證外,我們亦可透過 XML Schema的使用來達到同樣的目的。 XML Schema為 DTD後所提出來用以定義 XML文件的標準,之所以會被提出且逐漸取代 DTD

    11、檔案在於其有底下幾個優點:1. 和 XML文件的語法相同 :從上面的 DTD檔案示範中可以發現, DTD的語法和 XML檔案的語法是完全不同的,因此,學習 DTD語法將成為使用者額外的負擔,而 XML Schema改進這個缺點,使用和 XML文件相同的語法。2. 提供更彈性的文件標準設定 : DTD語法在文件的定義上,提供了過少的資料型態和設定彈性,因此,對於複雜的文件定義,往往無法如使用者所想進行規範,而這也是 XML Schema推出的主因之一。在 XML Schema中,不但提供了多樣的資料型態設定,還提供對範圍設定和條件設定的支援,因此更能滿足不同使用者的需求。 22-1. XML簡介

    12、 我們透過簡單的圖表說明兩者間的差異: 比較 DTD XML Schema語法 承襲 SGML的 DTD而來,因此有屬於自己的一套語法規範,和XML的語法內容完全不同。 完全依照 XML文件的語法標準。本身即為一個 XML檔案。 資料型態只提供 CDATA、 ENUMERATED、 NMTOKEN、 NMTOKENS、ID、 IDREF、 ENTITY、ENTITIES和 NOTATION等十種資料型態。 除了 DTD所提供的型態外,而提供如 Date、 Boolean、 Float、Double和 Integer等數十種的資料型態。 格式設定不支援。 允許對資料格式進行設定,如 ddd限制資

    13、料格式為三位數的數字。 22-1. XML簡介比較 DTD XML Schema範圍設定 不支援。 允許設定資料的範圍,如可限制數值輸入介於 100-200間。 自訂型態 不支援。 允許自定資料型態。 物件概念 不支援。 含有物件的概念。對於資料型態和結構提供繼承等功能。 複雜度 低 高使用彈性 低 高更詳細的 XML Schema說明請參考坊間 XML相關書籍,在此,僅提供相對於 myemployee.dtd檔案的 XML Schema檔案供讀者參考,兩者同樣可作為myemployee.xml檔案驗證之用。 22-1. XML簡介 myemployee.xsd檔案22-1. XML簡介22-

    14、1. XML簡介22-1. XML簡介 上述的程式碼相較於 DTD 檔案略為複雜,但卻能提供更詳細的文件定義。至於 XML Schema文件定義的引用方式則如下所示: 22-1. XML簡介 排版樣本定義 除了對文件內容的定義外, XML檔案還可就顯示的格式進行定義,也就是所謂的內容和排版分離。如此, XML檔案就能專注於對內容的紀錄,而把排版 (或呈現 )的工作交給排版樣本來定義。 XML檔案的排版樣本定義稱為 XSL,本身亦為一遵循 XML語法的 XML檔案。底下為myemployee.xml檔案的簡單排版樣式定義: 員工基本資料 員工編號 員工姓名 電話號碼 22-1. XML簡介公司分

    15、機 薪水 雇用日期 22-1. XML簡介 此檔案轉換 myemployee.xml為HTML中的表單形式對內容進行呈現。簡單說來, XSL檔案所做的事為把 XML中對應的標籤依照XSL指定的內容進行置換的工作,因此,除了對排版內容進行定義外,還可透過對標籤的置換達到文件交換的功用。 右邊為 myemployee.xml檔案有無搭配 XSL檔案在瀏覽器中的差別。 沒有 XSL檔案指定 XSL檔案22-1. XML簡介 文件內容區 文件內容區即 XML文件儲存內容的地方,透過自訂標籤的方式配合Well-Formed的格式即能表示 XML文件的內容,若該份文件指定 DTD或是 XML Schema

    16、檔案對內容進行定義,則整份 XML文件還必須符合DTD或 XML Schema中的定義。 XML相關檔案間的關係 22-2. XML基本元件的存取使用 常用的 XML文件存取方法有兩種: DOM和 SAX DOM:全名為 Document Object Model。存取 XML文件的方法為把整份 XML文件先載入到記憶體中形成一個樹狀結構,再透過對個別樹狀節點的控制來達成存取文件的目的,因此,效率會比較差,但對 XML文件的存取卻比較方便。 SAX:全名為 Simple API for XML。該方法僅載入部分 XML文件內容進行分析,進而讀取 XML文件內容,由於每次的載入動作僅讀取部分的

    17、XML文件內容而非整份 XML文件,因此在使用效率上比 DOM來的佳,但卻有操作不易等缺點。 在 C+ Builder中則使用 DOM方法作為存取 XML檔案的依據。透過不同廠商實作的 DOM Interface便可對 XML文件進行存取的動作。然而, DOM Interface的定義十分複雜,在使用上極不方便,為此, C+ Builder封裝Microsoft所實作的 MS DOM為 XMLDocument元件以方便使用者對 XML元件存取的動作,而透過 XMLDocument元件的輔助,存取 XML文件內容也變得簡單許多。22-2-1. XMLDocument元件 XMLDocument元

    18、件存在於元件樣版中的 Internet頁次 當使用該元件時,只需透過物件檢視器內幾個屬性的設定,即可完成對XML文件指定和載入的動作,這些屬性的設定步驟如下:1. 設定 DOMVendor屬性:透過該屬性選擇不同廠商所實作的 DOM介面。由於 Windows作業系統本身即提供了 DOM介面的支援 (MS DOM),所以可直接設定該屬性值為 MSXML即可。2. 指定讀入的 XML文件:透過 Filename屬性指定 XML檔案或是以 XML屬性讀入 TStrings型態的內容。諸如 Memo元件的 Lines屬性或是ListBox元件的 Items屬性皆為 TStrings型態。22-2-1.

    19、 XMLDocument元件3. 設定分析方法的選項:透過 ParseOptions屬性設定 DOM分析 XML內容的方法。此屬性的內容取決於 DOMVendor屬性所設定的 DOM實作廠商,而預設的 MSDOM則提供了以下幾個子屬性:poResolveExternals、 poValidateOnParse、 poPreserveWhiteSpace和 poAsyncLoad。各子屬性功能簡述如下: 子屬性 功能敘述poResolveExternals 外部相關的定義在 Parse時是否同時考慮,所謂的外部定義包括namespaces、 DTD external subsets和 exter

    20、nal entity references。 poValidateOnParse 設定分析 (Parse)文件內容時,是否去檢查該文件有無符合 DTD或XML Schema檔案的限制。 poPreserveWhiteSpace 設定是否去掉 XML文件中的空白符號。 poAsyncLoad 設定是否允許分次進行文件分析的工作。分次分析文件的工作能加速處理 XML文件的速度,但卻可能發生處理節點尚未被 XMLDocument分析的錯誤。 22-2-1. XMLDocument元件4. 設定 Active屬性對文件內容進行分析:在設定 Active屬性為 True後即可透過 XMLDocument

    21、元件內的方法對 XML內容進行讀取的動作。由於 XMLDocument元件以樹狀結構儲存載入的 XML文件,所以對 XML文件存取的第一步便是利用內建的 DocumentElement屬性回傳文件的進入點,而此回傳值為 C+ Builder為了簡化存取流程所自訂的IXMLNode介面 (宣告型態為 _di_IXMLNode)。透過 IXMLNode介面的回傳即可對此節點內的屬性值或子節點進行內容讀取、新增和刪除的動作。底下為 C+ Builder為了簡化 XML文件存取所提供的幾個介面介面 宣告型態 敘述IXMLDocument _di_IXMLDocument 該介面表示一份文件。 IXML

    22、Node _di_IXMLNode 該介面表示 XML文件上的一個節點。 IXMLNodeList _di_IXMLNodeList 該介面表示 XML文件中同一階層的所有節點。 IXMLNodeCollection _di_IXMLNodeCollection 該介面表示同一型態的子節點集合。 22-2-1. XMLDocument元件 利用上面這些介面配合 XMLDocument元件所提供的函式即可存取 XML文件內容。 下面為對 XML文件新增節點、刪除節點和讀取節點的程式寫法: 新增節點 刪除節點_di_IXMLNode newPerson=XMLDocument1-DocumentElement-AddChild(“Person“);_di_IXMLNode personInfo;personInfo=newPerson-AddChild(“Name“); /新增 Person內的 Name子標籤personInfo-Text=LabeledEdit2-Text; /指定 Name標籤的內容_di_IXMLNode employee=XMLDocument1-DocumentElement;employee-ChildNodes-Delete(employee-ChildNodes-Count-1);

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第二十二章_C++_Builder上的XML应用.ppt
    链接地址:https://www.docduoduo.com/p-7256832.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开