freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

精品課件教案ppt】 第二十章 可擴(kuò)展標(biāo)記語(yǔ)言(xml)-文庫(kù)吧

2024-12-28 15:40 本頁(yè)面


【正文】 和 urn:deitel: imageInfo 作為 URI 使用。一種常見(jiàn)的做法是將 URL 作為 URI 使 用。因?yàn)? URL 中的域名( )肯定是不重復(fù)的。例 如,第 6~7 行可以改寫(xiě)成: 6 text:directory xmlns:text = 7 xmlns:image = 這個(gè)例子使用了與 Deitel amp。 Associates 公司域名對(duì)應(yīng)的 URL 來(lái)標(biāo) 識(shí)命名空間。 XML 解析器其實(shí)永遠(yuǎn)不會(huì)訪問(wèn)這些 URL —— 它們 只是一系列以示區(qū)別的字符。這些 URL 不需要引用實(shí)際的網(wǎng) 頁(yè),甚至不需要具有正確的形式。 第 9~11 行用命名空間前綴 text 來(lái)限定元素 file 和 description, 表示它們從屬于 ? urn:deitel:textInfo‖ 命名空間。注意,命名空間前 綴也要應(yīng)用于結(jié)束標(biāo)記。第 13~16 行將命名空間前綴 text 應(yīng)用 于 file、 description 和 size 元素。 要想避免為每個(gè)標(biāo)記名都附加命名空間前綴,作者可以指定 一個(gè) ? 默認(rèn)命名空間 ?。下面的文檔演示了默認(rèn)命名空間。 1 ?xml version= encoding=utf8? 2 3 ! 4 ! Using default namespace 5 6 directory xmlns =urn:deitel:textInfo 7 xmlns:image =urn:deitel:imageInfo 8 9 file filename = 10 descriptionA book list/description 11 /file 12 13 image:file filename = 14 image:descriptionA funny picture/image:description 15 image:size width =200 height =100 / 16 /image:file 17 18 /directory 默認(rèn)命名空間應(yīng)用于 directory 元素以及沒(méi)有使用命名空間前 綴限定的所有元素。但是,也可使用一個(gè)命名空間前綴,為特 定元素指定一個(gè)不同的命名空間。例如,第 13 行為 file 元素附 加了 image 前綴,表明它在 urn:deitel:imageInfo 命名空間中而不是 在默認(rèn)命名空間中。 文檔對(duì)象模型 雖然 XML 文檔是文本文件,但通過(guò)順序文件訪問(wèn)技術(shù)從中獲 取數(shù)據(jù),顯得既不實(shí)際,效率也不夠好,尤其是在需要?jiǎng)討B(tài)添 加或刪除數(shù)據(jù)的時(shí)候。 一個(gè) XML 文檔被成功解析后,解析器會(huì)將文檔數(shù)據(jù)按照樹(shù)結(jié) 構(gòu)存儲(chǔ)到內(nèi)存中。下面我們以 文檔為例討論文檔的樹(shù) 結(jié)構(gòu)。這個(gè)層次化的樹(shù)結(jié)構(gòu)稱為 ? 文檔對(duì)象模型 ?( Document Object Model, )樹(shù),能夠創(chuàng)建這類(lèi)結(jié)構(gòu)的 XML 解析器被稱之為 ? DOM 解析器 ?。 DOM 樹(shù)將 XML 文檔的每個(gè)組件(比如 article, date, firstName 等等)表示成樹(shù)上的一個(gè)節(jié)點(diǎn)。包含了其他節(jié)點(diǎn)的一個(gè)節(jié)點(diǎn)( 如 author)稱為 ? 父節(jié)點(diǎn) ?。具有同一父的節(jié)點(diǎn)(比如 firstName 和 lastName)稱為 ? 同輩節(jié)點(diǎn) ?( Sibling Node)。 節(jié)點(diǎn)的 ? 后輩節(jié)點(diǎn) ?( Descendant Node)包括:節(jié)點(diǎn)的子節(jié)點(diǎn)、 子節(jié)點(diǎn)的子節(jié)點(diǎn) … 類(lèi)似地, 節(jié)點(diǎn)的 ? 前輩節(jié)點(diǎn) ?( Ancestor Node)包括:節(jié)點(diǎn)的父節(jié)點(diǎn)、父 節(jié)點(diǎn)的父節(jié)點(diǎn) … 每個(gè) DOM 樹(shù)都只有一個(gè) ? 根節(jié)點(diǎn) ?,它包含了其他所有節(jié)點(diǎn)、 比如注解和元素。 用于創(chuàng)建、讀取和操縱 XML 文檔的類(lèi)型定義在 System::Xml 命 域空間中。該空間還包含其他命域空間,提供了與 XML 文檔有 關(guān)的其他類(lèi)。 文檔的 DOM 樹(shù)如下所示: 接下來(lái),本節(jié)要展示使用 DOM 樹(shù)的幾個(gè)程序?qū)嵗? article title date author summary content firstName lastName 實(shí)例 1 XmlReaderTest 加載了本章第一個(gè) XML 文檔 , 并在一個(gè)文本框中按照 DOM 樹(shù)層次結(jié)構(gòu)顯示其中的數(shù)據(jù)。 在該實(shí)例中通過(guò)創(chuàng)建 XML 文檔類(lèi)型 XmlDocument 的對(duì)象,并 調(diào)用 XmlDocument 類(lèi)型的方法 Load 將 加載到對(duì)象中, 以便程序讀取和處理該 XML 文檔的數(shù)據(jù)。 讀取 XmlDocument 類(lèi)型對(duì)象所加載的數(shù)據(jù)是由 XmlNodeReader 類(lèi)型(抽象類(lèi)型 XmlReader 的派生類(lèi))對(duì)象通過(guò) Read 方法完成 的。 本程序只對(duì)讀取的數(shù)據(jù)進(jìn)行類(lèi)型(元素、注解還是文本)判 斷。用于判斷的數(shù)據(jù)類(lèi)型依據(jù)是由枚舉類(lèi)型 XmlNodeType 提供 的。上述的類(lèi)型和枚舉同屬于 System::Xml 命域空間中。 為了顯示 XmlDocument 類(lèi)型對(duì)象中加載的 XML 文檔數(shù)據(jù),需 要在程序的主窗體中添加一個(gè)文本框 TextBox 控件。程序的 GUI 設(shè)計(jì)如下: 編程要點(diǎn) 1 由于程序中需要使用 XmlDocument、 XmlNodeReader 類(lèi)型和枚舉類(lèi)型 XmlNodeType ,因此程序中需要 添加使用這些類(lèi)型所在的命域空間的語(yǔ)句: using namespace System::Xml。 2 在主窗體 Form1 類(lèi)型中添加一個(gè)方法 PrintXml,實(shí)現(xiàn)按樹(shù)形結(jié) 構(gòu)顯示指定 XML 文件中信息的設(shè)計(jì)需求。代碼如下: void PrintXml() { // create and load XML document XmlDocument ^document = gew XmlDocument()。 documentLoad( L)。 // create XmlNodeReader for document XmlNodeReader ^reader = gew XmlNodeReader( document )。 // show form before outputTextBox is populated thisShow()。 // tree depth is 1, no indentation int depth = 1。 // display each node39。s content while( readerRead() ) { switch( readerNodeType ) { // if Element, display its name case XmlNodeType::Element: // increase tab depth depth++。 TabOutput( depth )。 outputTextBoxAppendText( String::Concat( L, readerName, L\r\n ))。 // if empty element, decrease depth if( readerIsEmptyElement ) depth。 break。 // if Comment, display it case XmlNodeType::Comment: TabOutput( depth )。 outputTextBoxAppendText( String::Concat( L!, readerValue, L\r\n ))。 break。 // if Text, display it case XmlNodeType::Text: TabOutput( depth )。 outputTextBoxAppendText( String::Concat( L\t, readerValue, L\r\n ))。 break。 // if XML declaration, display it case XmlNodeType::XmlDeclaration: TabOutput( depth )。 outputTextBoxAppendText( String::Concat( L?, readerName, L , readerValue, L ?\r\n ))。 break。 // if EndElement, display it and decrement depth case XmlNodeType::EndElement: TabOutput( depth )。 outputTextBoxAppendText( String::Concat( L/, readerName, L\r\n ))。 depth。 break。 } // end switch } // end while } // end method PrintXml 其中輔助方法 TabOutput 用于在輸出的文本中加入 Tab 轉(zhuǎn)移字 符,以便表示文本信息的層次關(guān)系。代碼如下: void TabOutput( int number ) { for( int i = 0。 i number。 i++ ) outputTextBoxAppendText( L\t )。 } // end method TabOutput 3 在 Form1 的構(gòu)造函數(shù)中添加調(diào)用 PrintXml 方法的語(yǔ)句: Form1( void ) { InitializeComponent()。 PrintXml()。 } 4 添加主窗體大小變化事件的處理方法 Form1_SizeChanged,以便在主窗體大小發(fā)生變化時(shí),文本框控件的大小依據(jù)主窗體的大小發(fā)生相應(yīng)的變化。代碼如下: System::Void Form1_SizeChanged( System::Object^ sender, System::EventArgs^ e) { outputTextBoxSize = thisSize。 } 實(shí)例的運(yùn)行結(jié)果如下: 實(shí)例 2 XmlDOM 演示了如何通過(guò)程序來(lái)操縱 DOM 樹(shù)。該程序 首先將 XML 文件 加載到一個(gè) XmlDocument 類(lèi)型對(duì)象 中,然后依據(jù) XML 數(shù)據(jù)的 DOM 樹(shù)層次結(jié)構(gòu),將 XmlDocument 類(lèi) 型對(duì)象中的數(shù)據(jù)復(fù)制到另一個(gè) XmlDocument 類(lèi)型對(duì)象中,并在 復(fù)制操作的同時(shí)創(chuàng)建一個(gè)樹(shù)形視圖顯示中數(shù)據(jù)的樹(shù)形結(jié)構(gòu)關(guān)系。 程序還允許將復(fù)制得到的 XmlDocument 類(lèi)型對(duì)象中的數(shù)據(jù)以非 樹(shù)形結(jié)構(gòu)格式的文本顯示,同時(shí)將這些數(shù)據(jù)寫(xiě)到一個(gè)新建的 XML 文件中。 程序的 GUI 設(shè)計(jì)如下: 其中添加的三個(gè)按鈕( Button)控件、一個(gè)樹(shù)形視圖( TreeView) 控件和一個(gè)文本框控件( TextBox)的用途如下: 控件標(biāo)題 控件對(duì)象名 用途 Build buildButton 發(fā)出復(fù)制源 XML 文件對(duì)象到目標(biāo) XML 文件對(duì) 象,并創(chuàng)建顯示數(shù)據(jù)的樹(shù)形視圖的命令事件。 Print printButton 發(fā)出將目標(biāo) XML 文件對(duì)象中數(shù)據(jù)以非樹(shù)形格 式顯示,并寫(xiě)入新建 XML 文件的命令事件。 Reset resetButton 發(fā)出清除樹(shù)形視圖和文本框中數(shù)據(jù)文本,清空 目標(biāo) XML 文件對(duì)象中數(shù)據(jù)的命令事件。 xmlTreeView 樹(shù)形格式顯示源 XML 文件對(duì)象中的數(shù)據(jù)。 consoleTextBox 非樹(shù)形格式顯示源 XML 文件對(duì)象中的數(shù)據(jù)。 編程要點(diǎn) 1 由于程序中需要使用 XmlDocument、 XmlNodeReader、 XmlNode、 XmlNodeWriter、 TempFileCollection 類(lèi)型和枚舉 XmlNodeType , 因此程序中需要添加使用這些類(lèi)型所在的命域空間的語(yǔ)句: using namespace System::Xml。 using namespace System
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1