




已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)re控制程序源代碼自動(dòng)生成程序的研究與實(shí)現(xiàn).pdf.pdf 免費(fèi)下載
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要 r e 控制程序源代碼自動(dòng)生成程序的研究與實(shí)現(xiàn) 摘要 隨著計(jì)算機(jī)技術(shù)的快速發(fā)展與日益成熟 當(dāng)今社會(huì)對(duì)軟件產(chǎn)品的 需求也一直處于增長(zhǎng)的趨勢(shì) 對(duì)軟件質(zhì)量的要求也越來(lái)越嚴(yán)格 一方 面要滿足巨大的軟件需求 同時(shí)又要能有效應(yīng)對(duì)需求變更和應(yīng)用系統(tǒng) 的升級(jí)等問(wèn)題 以此來(lái)保證軟件的質(zhì)量 提高軟件的生產(chǎn)效率 降低 開(kāi)發(fā)成本和縮短開(kāi)發(fā)周期 若只依靠程序員手工編碼 不僅要耗費(fèi)大 量的時(shí)間和精力 而且還存在許多不穩(wěn)定 難以預(yù)料的因素 造成程 序的不可靠 針對(duì)于此 軟件工程領(lǐng)域提出了源代碼自動(dòng)化生成的軟 件開(kāi)發(fā)方法 為了對(duì)程序自動(dòng)生成技術(shù)和以此為基礎(chǔ)的軟件開(kāi)發(fā)方法進(jìn)行研 究 本課題結(jié)合項(xiàng)目的實(shí)際需要 討論了一個(gè)基于o r a dr e n d e r e n g i n e r e 的渲染引擎控制程序源代碼自動(dòng)生成的設(shè)計(jì)思想與實(shí)現(xiàn)技 術(shù) 提出了編寫(xiě)一個(gè)依據(jù)r e 控制系統(tǒng)所提供的命令說(shuō)明文本來(lái)生成源 代碼的自動(dòng)生成系統(tǒng) 該生成系統(tǒng)以控制命令的說(shuō)明文檔作為輸入 通過(guò)編寫(xiě)文檔分析程序 按照設(shè)計(jì)的正則表達(dá)式規(guī)則 利用表驅(qū)動(dòng)的 方式 分析出文檔中命令的結(jié)構(gòu)化數(shù)據(jù) 并動(dòng)態(tài)創(chuàng)建x m l 格式的代碼 模板 最終系統(tǒng)根據(jù)模板自動(dòng)生成控制程序的源代碼 通過(guò)實(shí)際使用證明 該代碼自動(dòng)生成系統(tǒng)能夠自動(dòng)分析命令協(xié)議 生成r e 控制程序源代碼 從而解決了靠手工編寫(xiě)無(wú)法應(yīng)對(duì)的r e 頻繁 升級(jí) 命令數(shù)量龐大以及命令協(xié)議變化等一系列問(wèn)題 極大地減少了 編程人員的工作量 提高了軟件的開(kāi)發(fā)效率 關(guān)鍵詞 文檔 源代碼自動(dòng)生成 正則表達(dá)式 結(jié)構(gòu)化數(shù)據(jù) x m l 模 板 a b s t 認(rèn)c t r e s e a r c ha n di m p l e m e n t a t i o no f r e n d e re n g i n eco n t r o l l e r sa u t o s o u r c eco d eg e n e r a t o r a b s t r a c t w i t ht h er a p i dd e v e l o p m e n ta n dt h ei n c r e a s i n gm a t u r i t yo fc o m p u t e r t e c h n o l o g y t o d a y t h ed e m a n df o rs o f t w a r ep r o d u c t sh a sb e e ni nag r o w t h s t a t e a n dt h er e q u i r e m e n t st os o f t w a r eq u a l i t ya r ea l s or i s i n g t om e e tt h e h u g ed e m a n do fs o f t w a r ea n da tt h es a m et i m et or e s p o n de f f e c t i v e l yt o d e m a n dc h a n g e sa sw e l la s a p p l i c a t i o nu p g r a d e s a u t o m a t e dg e n e r m i o n m e t h o d o l o g yo fs o u r c ec o d eh a sb e e na d v a n c e di nt h ea r e ao fs o f t w a r e e n g i n e e r i n g t h em e t h o dc a ne n s u r et h eq u a l i t yo ft h es o f t w a r e i m p r o v e s o f t w a r ep r o d u c t i v i t ya n dr e d u c es o f t w a r ed e v e l o p m e n tc y c l e sa n dc o s t s b e c a u s ei fo n l yt or e l yo nh a n d c o d i n g n o to n l yi tt a k e sp r o g r a m m e r sal o t o ft i m ea n de f f o r t b u ta l s ot h e r ea r es t i l lm a n yu n s t a b l ea n du n p r e d i c t a b l e f a c t o r sw h i c hr e s u l t i n gi nu n r e l i a b l ep r o c e d u r e i no r d e rt or e s e a r c ho n a u t o m a t i c a l l yg e n e r a t i n g s o u r c ec o d e t e c h n o l o g ya n dt h em e t h o do fs o f t w a r ed e v e l o p m e n tb a s e do nt h e t e c h n o l o g y w i t ht h ea c t u a ln e e d so fap r o j e c t t h ei s s u ed i s c u s s e dt h e d e s i g n i n gi d e aa n dr e a l i z a t i o nt e c h n o l o g yo fa u t os o u r c ec o d eg e n e r a t o r b a s e do no r a dr e n d e re n g i n ec o n t r o l l e r a n dr e a l i z e dt h es o u r c ec o d e g e n e r a t i o ns y s t e m t h es y s t e mt o o kad o c u m e n t a t i o no fc o n t r 0 1c o m m a n d s a si n p u t c o n f o r m e dt op r e d e t e r m i n e dr e g u l a r e x p r e s s i o nr u l e s a n a l y z e dt h e s t r u c t u r e dd a t ao fc o m m a n d s a n dt h e nd y n a m i c a l l yg e n e r a t e dx m l b a s e d c o d et e m p l a t e s f i n a l l y t h i ss y s t e ma u t o m a t i c a l l yg e n e r a t e dt h es o u r c e c o d eo fc o n t r o l l e ri na c c o r d a l i c ew i t ht h et e m p l a t e s b yp u t t i n gt h es y s t e mi n t oa c t u a lu s e i tp r o v e dt h a tt h eg e n e r a t i n g s y s t e mc a na u t o m a t i c a l l ya n a l y z et h ec o m m a n dp r o t o c o l a n dg e n e r a t e m 北京化工大學(xué)碩士學(xué)位論文 s o u r c ec o d eo fr ec o n t r o l l e r a sar e s u l t i ts o l v e dar a n g eo fi s s u e s w h i c h a r ef a i l u r et oc o p ew i t hf r e q u e n tu p g r a d e sb yh a n d ah u g en u m b e ro f o r d e r sa sw e l la st h ec h a n g e so fc o m m a n dp r o t o c 0 1 a l s o t h es y s t e m g r e a t l yr e d u c e st h ew o r k l o a do fp r o g r a m m e r s a n di m p r o v e st h es o f t w a r e d e v e l o p m e n te f f i c i e n c y k e y w o r d s d o c u m e n t a u t o s o u r c ec o d e g e n e r a t i o n r e g u l a r e x p r e s s i o n s s t r u c t u r e dd a t a x m l b a s e dt e m p l a t e s i v 北京化工大學(xué)位論文原創(chuàng)性聲明 本人鄭重聲明 所呈交的學(xué)位論文 是本人在導(dǎo)師的指導(dǎo)下 獨(dú) 立進(jìn)行研究工作所取得的成果 除文中已經(jīng)注明引用的內(nèi)容外 本論 文不含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)過(guò)的作品成果 對(duì)本文的 研究做出重要貢獻(xiàn)的個(gè)人和集體 均已在文中以明確方式標(biāo)明 本人 完全意識(shí)到本聲明的法律結(jié)果由本人承擔(dān) 作者簽名 位垂蓮日期 型哇塑絲旦 關(guān)于論文使用授權(quán)的說(shuō)明 學(xué)位論文作者完全了解北京化工大學(xué)有關(guān)保留和使用學(xué)位論文的 規(guī)定 即 研究生在校攻讀學(xué)位期間論文工作的知識(shí)產(chǎn)權(quán)單位屬北京 化工大學(xué) 學(xué)校有權(quán)保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交論文的復(fù)印件 和磁盤(pán) 允許學(xué)位論文被查閱和借閱 學(xué)??梢怨紝W(xué)位論文的全部 或部分內(nèi)容 可以允許采用影印 縮印或其它復(fù)制手段保存 匯編學(xué) 位論文 保密論文注釋 本學(xué)位論文屬于保密范圍 在上年解密后適用本 授權(quán)書(shū) 非保密論文注釋 本學(xué)位論文不屬于保密范圍 適用本授權(quán) 書(shū) 作者簽名 醢至彗 日期 碰車(chē)復(fù)旦壟旦 導(dǎo)師簽名 嘭葉 日期 型生塑蘭里 第一章緒論 1 1 課題背景 第一章緒論 隨著社會(huì)的發(fā)展和科技的進(jìn)步 計(jì)算機(jī)已滲透到人類生活的方方面面 人們 對(duì)軟件產(chǎn)品的依賴程度也不斷提高 面對(duì)龐大的軟件需求 同時(shí)又要保證軟件項(xiàng) 目的質(zhì)量 減少重復(fù)編碼 提高勞動(dòng)生產(chǎn)率 代碼生成自動(dòng)化是必由之路 l l 近 年來(lái) 一些代碼自動(dòng)生成框架和技術(shù)受到軟件技術(shù)人員和工程人員的重視 成為 軟件產(chǎn)業(yè)界所關(guān)注的焦點(diǎn)之一 并因此出現(xiàn)了許多比較成熟的代碼生成框架技術(shù) 例如l e x y a c d 2 m d a 3 1 a n d r o m d a 4 s t r u c t s 5 等 其中 l c x y a c c 是最早 用于自動(dòng)化編寫(xiě)編譯程序的工具 這些代碼自動(dòng)生成技術(shù)各自在不同程度上改變 了傳統(tǒng)的開(kāi)發(fā)方式 使軟件開(kāi)發(fā)效率得到了極大地提高 同時(shí)保證了軟件質(zhì)量 加強(qiáng)了軟件的可重用性和可維護(hù)性 上述的通用代碼生成技術(shù) 在提高程序員的軟件開(kāi)發(fā)效率 降低軟件的開(kāi)發(fā) 強(qiáng)度 規(guī)范軟件的開(kāi)發(fā)過(guò)程以及改進(jìn)軟件的開(kāi)發(fā)方法等方面確實(shí)發(fā)揮了巨大的作 用 對(duì)一般軟件的開(kāi)發(fā)具有普遍的指導(dǎo)意義 然而 對(duì)于紛繁復(fù)雜的應(yīng)用領(lǐng)域 任何一種通用技術(shù)都無(wú)法做到處處適用 時(shí)時(shí)可行 因此不能對(duì)其生搬硬套 否 則必會(huì)適得其反 因?yàn)獒槍?duì)特定的領(lǐng)域 其具有自身的特殊性 需求必然會(huì)有所 不同 所以只有結(jié)合項(xiàng)目的具體情況進(jìn)行研究和應(yīng)用 代碼生成技術(shù)才能較好地 解決領(lǐng)域應(yīng)用的實(shí)際問(wèn)題 本文所討論的代碼自動(dòng)生成系統(tǒng) 其需求依據(jù)來(lái)源于一個(gè)控制系統(tǒng) 該控制 系統(tǒng)的工作是通過(guò)向其控制接口發(fā)送控制命令來(lái)指揮進(jìn)行的 該控制系統(tǒng)提供了 一個(gè)關(guān)于控制命令的說(shuō)明文檔 文檔中所描述的控制命令數(shù)量很多 而且 隨著 控制系統(tǒng)的頻繁升級(jí) 控制命令也會(huì)隨之發(fā)生改變 如果以手工方式編寫(xiě)控制程 序 則每次升級(jí)都需要重新編寫(xiě)控制程序 不僅工作量很繁重 而且也容易出錯(cuò) 所幸的是 控制系統(tǒng)提供的命令說(shuō)明文檔具有一定的格式規(guī)律 控制命令也有一 定的格式規(guī)律 因此 本文以通用的代碼自動(dòng)生成技術(shù)思想作為指導(dǎo) 提出編寫(xiě) 一個(gè)文檔分析程序 以控制命令的說(shuō)明文檔作為輸入 按照預(yù)定的規(guī)則和代碼模 板 自動(dòng)生成控制程序的源代碼 本文所實(shí)現(xiàn)的代碼自動(dòng)生成系統(tǒng) 不僅極大地 提高了軟件的開(kāi)發(fā)效率 縮短了軟件的開(kāi)發(fā)時(shí)間 使編程人員能夠把精力更多地 集中在創(chuàng)造性的開(kāi)發(fā)以及系統(tǒng)架構(gòu)研究上 而且也提高了軟件系統(tǒng)的健壯性 穩(wěn) 定性 可擴(kuò)展性和可維護(hù)性 6 j 北京化工大學(xué)碩士學(xué)位論文 1 2 國(guó)內(nèi)外研究現(xiàn)狀 源代碼自動(dòng)生成技術(shù)的應(yīng)用領(lǐng)域相當(dāng)?shù)貜V泛 從嵌入式代碼的生成到軟件工 程中u m l 圖的產(chǎn)生都發(fā)揮了它重要的作用 在商業(yè)領(lǐng)域 例如 從很久以前 微 軟的各種開(kāi)發(fā)工具 甚至包括像o f f i c e 這類非嚴(yán)格意義上的開(kāi)發(fā)工具 就都提 供了豐富的代碼自動(dòng)生成功能 這些功能體現(xiàn)在各種各樣的開(kāi)發(fā)向?qū)?如著名 的m f c 應(yīng)用程序框架 v i s u a lb a s i c 的 所見(jiàn)即所得一開(kāi)發(fā)環(huán)境以及j a v a2 e n t e r p r i s ee d i t i o n j 2 e e 等等 7 j 近幾年 隨著計(jì)算機(jī)技術(shù)的顯著進(jìn)步 開(kāi)發(fā)工具的不斷優(yōu)化 代碼生成技術(shù) 已受到許多組織 企業(yè)以及軟件開(kāi)發(fā)人員的廣泛關(guān)注 他們開(kāi)始致力于代碼自動(dòng) 生成技術(shù)和框架的研究工作中 并取得了不俗的成績(jī)和豐碩的成果 產(chǎn)生了像 o p t i m a l j l s l c o d e s m i t h 9 1 i n t e l l i ji d e a 1 0 等一系列具有代表性的代碼生成工具 目前 關(guān)于代碼自動(dòng)生成技術(shù)方面的研究和實(shí)現(xiàn)的主要內(nèi)容有 l l 1 基于元數(shù)據(jù)驅(qū)動(dòng)的代碼自動(dòng)生成方案 1 2 1 該方案借助 n e t 框架 在分層結(jié) 構(gòu)的企業(yè)資源管理系統(tǒng)中實(shí)現(xiàn)了存儲(chǔ)過(guò)程和數(shù)據(jù)庫(kù)觸發(fā)器的自動(dòng)生成 2 基于設(shè)計(jì)模式的代碼自動(dòng)生成方案 1 3 1 該方法設(shè)計(jì)實(shí)現(xiàn)的一個(gè)工具 用于 自動(dòng)實(shí)現(xiàn)描述抽象層的設(shè)計(jì)模式 該工具采用分布式體系架構(gòu) 以非定制 的組件實(shí)現(xiàn) 通過(guò)用戶提供的指定模式的描述信息 該工具就可以自動(dòng)生 成所有和模式相關(guān)的代碼及描述 3 基于u m l 模型的代碼自動(dòng)生成方案 1 4 j 該方案對(duì)于代碼自動(dòng)生成技術(shù)的分 析是以u(píng) m l 模型為起點(diǎn)進(jìn)行分析的 通過(guò)這種技術(shù)可以直接生成系統(tǒng)的多 層 當(dāng)生成代碼時(shí) 同時(shí)還保留了在模型中體現(xiàn)的層次間的關(guān)系 此外 這個(gè)方案提供的多范例的方法使開(kāi)發(fā)者可以為其實(shí)現(xiàn)選擇合適的解決方 案 4 基于x m l 并借助元模型的w e b 應(yīng)用程序的自動(dòng)生成方案 1 5 在這個(gè)方案 中 通過(guò)分析在萬(wàn)維網(wǎng)與w e b 頁(yè)面環(huán)境語(yǔ)法間的協(xié)同效應(yīng) 提供了一種基 于三層的元模型階層的代碼自動(dòng)生成系統(tǒng)原型 5 基于x m l 的自動(dòng)生成架構(gòu)文檔方案 1 6 1 該方案提出了一種基于x m l 的 用 于生成軟件系統(tǒng)的體系文檔的方法 6 基于u m l 工具的自動(dòng)生成模擬程序的方案f l 刀 該方案通過(guò)將一個(gè)用u 地圖 描述的系統(tǒng)轉(zhuǎn)化成模擬程序來(lái)預(yù)測(cè)該系統(tǒng)的性能 7 基于模板的用于多媒體的自動(dòng)數(shù)據(jù)流代碼生成的方案 1 8 該方案基于模板 自動(dòng)生成直接內(nèi)存存取 d m a 代碼 減少了d m a 的編程工作量 從而保持 了多媒體的高性能 8 用于j a v a 及其應(yīng)用的運(yùn)行時(shí)代碼生成器的方案 1 9 該方案介緝了通過(guò)對(duì) 2 第一章緒論 動(dòng)態(tài)信息進(jìn)行探索從而改善程序效率的一個(gè)工具 9 u m l 狀態(tài)機(jī)和合作圖的模型檢測(cè)和代碼生成方案剛 該方案介紹了一種基 于有限自動(dòng)機(jī)模式匹配 并快速地生成小型的代碼自動(dòng)生成器的工具 上述介紹的目前代碼自動(dòng)生成技術(shù)研究所涉及的各種主要內(nèi)容 充分表明了 代碼自動(dòng)生成技術(shù)的應(yīng)用廣泛 對(duì)軟件開(kāi)發(fā)技術(shù)的快速發(fā)展起到了推波助瀾的促 進(jìn)作用 另外 根據(jù)代碼生成器在程序設(shè)計(jì)方面的應(yīng)用領(lǐng)域進(jìn)行分類 其取得的成果 有 1 編譯與優(yōu)化領(lǐng)域 編譯與優(yōu)化領(lǐng)域的代碼生成主要是研究如何根據(jù)高級(jí)語(yǔ) 言生成其代碼或字節(jié)碼 以及生成的代碼的可移植性問(wèn)題 例如 a n t l i 卜 一開(kāi)源語(yǔ)法分析器 就是這一領(lǐng)域的一種語(yǔ)言工具 它為包括j a v a c 和 c 在內(nèi)的語(yǔ)言提供了通過(guò)語(yǔ)法描述來(lái)自動(dòng)構(gòu)造自定義語(yǔ)言的識(shí)別器 編譯 器和翻譯器的框架 a n t l r 可以通過(guò)斷言解決識(shí)別沖突 支持動(dòng)作和返回值 還可以根據(jù)輸入自動(dòng)地生成語(yǔ)法樹(shù)并可視化的顯示出來(lái) 2 l 2 專用代碼生成領(lǐng)域 專用代碼生成器通常面向?qū)S妙I(lǐng)域 生成小型的系統(tǒng) 或程序 因此可以達(dá)到更高的代碼生成率 例如有限元程序自動(dòng)生成系統(tǒng) f e p g f e p g 的開(kāi)發(fā)思想采用元件化的程序設(shè)計(jì)方法和人工智能技術(shù) 根 據(jù)有限元方法統(tǒng)一的數(shù)學(xué)原理及其內(nèi)在規(guī)律 以類似于數(shù)學(xué)公式推理的方 式 由微分方程表達(dá)式和算法表達(dá)式自動(dòng)產(chǎn)生有限元源程序 當(dāng)用戶只輸 入有限元方法所需的各種表達(dá)式和公式時(shí) f e p g 便會(huì)自動(dòng)產(chǎn)生所需的全部 有限計(jì)算的源程序 包括單元子程序 算法程序等 從而避免了復(fù)雜的有 限元編程勞動(dòng) 保證了程序的準(zhǔn)確性和一致性 捌 3 通用代碼生成領(lǐng)域 通用代碼生成由于其應(yīng)用開(kāi)發(fā)的領(lǐng)域廣泛 所以導(dǎo)致 代碼的生成效率不高 通常僅僅生成軟件的框架代碼 比如r a t i o n a lr o s e 叫a t i o n a l 公司的旗艦產(chǎn)品 是面向?qū)ο蟮慕9ぞ?是一個(gè)完全的 具有能滿足所有建模環(huán)境 w e b 開(kāi)發(fā) 數(shù)據(jù)建模 v i s u a ls t u d i o 和c 需 求能力和靈活性的一套解決方案 它使大型開(kāi)發(fā)項(xiàng)目的分析 建模 設(shè)計(jì) 規(guī)范化 它還提供了許多框架 諸如j 2 e e 等等 開(kāi)發(fā)人員可以選擇相應(yīng)的 框架將u m l 描述的需求和系統(tǒng)的體系架構(gòu)轉(zhuǎn)化為代碼 但僅僅是框架 并 沒(méi)有具體的實(shí)現(xiàn) 需要開(kāi)發(fā)人員在其中人工填入實(shí)現(xiàn)代碼 以滿足系統(tǒng)的 功能需求 因而代碼的生成率并不高 2 3 l 總之 近幾年來(lái) 經(jīng)過(guò)軟件開(kāi)發(fā)人員以及相關(guān)組織的不斷研究和探索 代碼 自動(dòng)生成技術(shù)已經(jīng)取得了一系列進(jìn)展 但是針對(duì)不同的應(yīng)用領(lǐng)域 代碼自動(dòng)生成 的實(shí)現(xiàn)方式應(yīng)該區(qū)別對(duì)待 切莫 依葫蘆畫(huà)瓢 3 北京化工大學(xué)碩士學(xué)位論文 1 3 本文研究?jī)?nèi)容 本課題主要研究?jī)?nèi)容包括 第一 研究文本格式的r e 協(xié)議 編寫(xiě)分析程序 將l l e 協(xié)議文本分解為結(jié) 構(gòu)化數(shù)據(jù) 第二 編寫(xiě)生成程序 對(duì)x m l 格式的命令文本示例進(jìn)行分析研究 自動(dòng)生 成r e 控制命令文本生成函數(shù) 第三 分析命令文本示例中的參數(shù)規(guī)則 從中提取出參數(shù)部分 并根據(jù)提 取出的參數(shù) 構(gòu)造r e 控制命令文本生成函數(shù)的形參表 迸一步完 善生成程序 第四 分析命令文本中的反饋文本規(guī)則 設(shè)計(jì)反饋?lái)憫?yīng)機(jī)制 構(gòu)造相應(yīng)的 反饋?lái)憫?yīng)類 第五 完善生成程序 為生成程序添加代碼對(duì)比和代碼更新功能 最后 編寫(xiě)測(cè)試系統(tǒng) 對(duì)自動(dòng)生成的代碼進(jìn)行測(cè)試 1 4 本文的組織結(jié)構(gòu) 本文各章的內(nèi)容安排如下 第一章 概括介紹了r e 控制程序源代碼自動(dòng)生成系統(tǒng)的應(yīng)用需求以及課題背 景 并闡述了代碼自動(dòng)生成技術(shù)在國(guó)內(nèi)外的研究現(xiàn)狀 然后分析了本文主要的研 究?jī)?nèi)容 目的以及意義 第二章 主要介紹了本課題實(shí)現(xiàn)代碼生成系統(tǒng)所應(yīng)用的關(guān)鍵技術(shù) 包括正則 表達(dá)式 x m l 可擴(kuò)展標(biāo)記語(yǔ)言和代碼自動(dòng)生成技術(shù) 尤其地 對(duì)代碼自動(dòng)生成技術(shù) 進(jìn)行了深入研究 詳細(xì)地介紹了代碼自動(dòng)生成器的分類和代碼生成技術(shù)的應(yīng)用 第三章 對(duì)代碼自動(dòng)生成系統(tǒng)進(jìn)行了初步的 全局的分析 討論了代碼自動(dòng) 生成系統(tǒng)的功能需求 對(duì)生成系統(tǒng)的目標(biāo)代碼以及模塊劃分進(jìn)行了詳細(xì)的說(shuō)明 第四章 介紹了代碼自動(dòng)生成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 分析了如何根據(jù)表驅(qū)動(dòng)的 方式來(lái)分析命令協(xié)議文本 并對(duì)系統(tǒng)的具體程序?qū)崿F(xiàn)過(guò)程進(jìn)行了詳細(xì)的介紹 最 后以圖例的形式給出了系統(tǒng)的應(yīng)用效果 第五章 介紹了測(cè)試系統(tǒng)即r e 控制程序的模塊劃分 設(shè)計(jì)與實(shí)現(xiàn) 第六章 總結(jié)和展望 對(duì)本文所做的工作進(jìn)行了總結(jié) 并提出了下一步還需 要進(jìn)一步研究的工作 4 第二章理論基礎(chǔ)與技術(shù)介紹 2 1r e 概述 第二章理論基礎(chǔ)與技術(shù)介紹 本課題討論的是 r e 控制程序源代碼自動(dòng)生成程序的研究與實(shí)現(xiàn) 其重點(diǎn)是 源代碼的自動(dòng)生成 i l e 只是該自動(dòng)生成工具所應(yīng)用的對(duì)象 因此 這里只簡(jiǎn)單介 紹髓的概念 髓是r e n d e re n g i n e 的縮寫(xiě) 即渲染引擎的意思 可以對(duì)這一概念分開(kāi)解釋 渲染 r e n d e r 是c 6 c o m p u t e rg r a p h i c s 即計(jì)算機(jī)圖形學(xué)中的最后一道工序 當(dāng)然 除了后期制作外 也是最終使圖像符合3 d 場(chǎng)景的階段 它是基于一套 完整的程序計(jì)算出來(lái)的 因此 影響圖像最終結(jié)果的要看它是基于什么程序渲染 的 比如是光影追蹤還是光能傳遞 而不是硬件的配置 硬件對(duì)它的影響只是一 個(gè)速度上的問(wèn)題 并不會(huì)改變渲染的最終結(jié)果 渲染的基本過(guò)程主要如下 首先 必須定位三維場(chǎng)景中的攝像機(jī) 這和真實(shí) 的攝影是一樣的 一般而言 三維軟件中四個(gè)主要的窗口 頂視圖 正視圖 側(cè) 視圖和透視圖 即是四個(gè)默認(rèn)的攝像機(jī) 其次 為了體現(xiàn)空間感 要決定哪些物 體在前面 哪些物體在后面和哪些物體被遮擋等 因?yàn)榭臻g感僅通過(guò)物體的遮擋 關(guān)系是不能完美再現(xiàn)的 還和光源的衰減 環(huán)境霧以及景深效果有著密切聯(lián)系 再者 要計(jì)算光源對(duì)物體的影響 即計(jì)算在場(chǎng)景中添加的每一個(gè)光源對(duì)物體的影 響 最后 渲染程序還要根據(jù)物體的材質(zhì)計(jì)算物體表面的顏色 材質(zhì)的類型 屬 性 紋理不同都會(huì)產(chǎn)生各種不同的效果 而且這種結(jié)果必須和光源結(jié)合起來(lái) 而引擎 e n g i n e 矧 在計(jì)算機(jī)行業(yè)中 就是能完成某個(gè)軟件最基本的功能的 一部分代碼 也就是這個(gè)軟件的動(dòng)力來(lái)源 有些功能 比如在大量文本中查找關(guān) 鍵詞 用簡(jiǎn)單的方法實(shí)現(xiàn)很慢 或者功能很難實(shí)現(xiàn) 使開(kāi)發(fā)人員感到很難辦 就 像搬運(yùn)工看到1 0 0 0 公斤的貨物一樣 搬運(yùn)工當(dāng)然希望有一個(gè)發(fā)動(dòng)機(jī)來(lái)拉動(dòng)這些貨 物 這樣他就不需要親自拉了 程序員也一樣 希望有一樣?xùn)|西來(lái)幫他解決類似 的問(wèn)題 所以 引擎就出現(xiàn)了 引擎主要有兩個(gè)特征 1 能夠解決很頭疼的問(wèn)題 這些問(wèn)題不需要非常高的效率 但卻很難實(shí)現(xiàn) 2 必須能夠有良好的重用性 讓人想用它的時(shí)候可以直接拿來(lái)用 所以如果某人做了一個(gè)東西 能夠解決某些難題 這些難題在一定范圍內(nèi)普 遍存在 并且能夠重用 那么他就可以聲稱他開(kāi)發(fā)了一個(gè) 引擎 因此 這里所說(shuō)的渲染引擎 r e 可以理解為能夠很容易 且有效地完成一系 列復(fù)雜渲染操作的計(jì)算機(jī)程序代碼 5 北京化工大學(xué)碩士學(xué)位論文 2 2 正則表達(dá)式 2 2 1 正則表達(dá)式概述 正則表達(dá)式可以看作一種有特定功能的小型編程語(yǔ)言 它能夠在大的字符串 表達(dá)式中定位子字符串 是字符串處理的強(qiáng)大工具 要注意的是 正則表達(dá)式不 是一種新技術(shù) 最初它是在u n i x 環(huán)境中開(kāi)發(fā)的 與p e r l 一起使用得比較多 m i c r o s o f t 把它移植到w i n d o w s 中 到目前為止 它在腳本語(yǔ)言 如w e b 腳本語(yǔ)言 j a v a s c r i p t 中已經(jīng)得到了廣泛應(yīng)用 使用正則表達(dá)式 解決的最常見(jiàn)的問(wèn)題是數(shù)據(jù)驗(yàn)證 當(dāng)然還可以對(duì)字符串執(zhí) 行許多復(fù)雜而高級(jí)的操作 例如 1 區(qū)分 可以是標(biāo)記或刪除 字符串中所有重復(fù)的單詞 例如 把il o v ec h i n a c h i n a 轉(zhuǎn)換為il o v ec h i n a 2 把所有的單詞都轉(zhuǎn)換為標(biāo)題格式 例如 把t h i si sab o o k 轉(zhuǎn)換為t h i si s ab o o k 3 把長(zhǎng)于3 個(gè)字符的所有單詞都轉(zhuǎn)換為首字母大寫(xiě)的格式 例如 把t h i si s ab o o k 轉(zhuǎn)換為t h i si sab o o k 4 確保句子有正確的大小寫(xiě)形式 5 區(qū)分u r i 的各個(gè)元素 例如 從h t t p w w w w r o x c 0 1 中提取出協(xié)議 計(jì)算 機(jī)名稱 文件名等 2 2 2s y s t e m t e x t r e g uia r e x p r e s sio n s 命名空間 在 n e t 中實(shí)現(xiàn)正則表達(dá)式的關(guān)鍵是s y s t e m t e x t r e g u l a r e x p r e s s i o n s 命名空間 它包含的類如表2 1 所示 表2 1s y s t e m t e x t r e g u l a r e x p r e s s i o n s 命名空間中的類描述 t a b l e2 一ld e s c r i p t i o no fc l a s si ns y s t e m t e x t r e g u r a l e x p r e s s i o n s 類名描述 r e g e x包含了正則表達(dá)式 以及使用正則表達(dá)式的各種方法 m a t c h c o ll e c t i o n 包含了一個(gè)正則表達(dá)式找到的所有匹配項(xiàng) m a t c h 包含了一次匹配中所有匹配的文本 g r o u p c o ll e c t i o n包含了一次匹配中的所有分組 g r o u p 包含一個(gè)分組集合中一個(gè)組的細(xì)節(jié) c a p t u r e c o l l e c t i o n包含一個(gè)組的所有c a p t u r e 對(duì)象 c a p t u r e 返回組內(nèi)一次捕獲所匹配的字符串 r e g e x c o m p i t a ti o n i n f o 提供了把r e g e x 編譯為一個(gè)獨(dú)立程序集所需的細(xì)節(jié) 上表中所描述的幾個(gè)類中 其中最重要的是r e g e x 類 r e g e x 類不僅僅可以用 6 第二章理論基礎(chǔ)與技術(shù)介紹 來(lái)創(chuàng)建正則表達(dá)式 而且提供了許多有用的方法 這些方法通過(guò)使用正則表達(dá)式 來(lái)操作字符串?dāng)?shù)據(jù) 例如 搜索字符模式或進(jìn)行復(fù)雜的查找和替換 如果要把一 個(gè)正則表達(dá)式重復(fù)用于不同的字符串 就可以創(chuàng)建一個(gè)r e g e x 對(duì)象 r e g e x 類的構(gòu) 造函數(shù)主要有兩個(gè) 為r e g e x s t r i n gp a t t e r n 和r e g e x s t r i n gp a t t e r n r e g e x o p t i o n so p t i o n s 其中第一個(gè)參數(shù)是要匹配的正則表達(dá)式 第二個(gè)參數(shù)是 r e g e x 類所支持的常用選項(xiàng) 有i g n o r e c a s e r i g h t t o l e f t n o n e m u l t i l i n e 和 s i n g l e l i n e 幾個(gè)選項(xiàng) 另外 r e g e x 還有幾個(gè)常用的方法 i s m a t c h 方法可以測(cè)試字符串 看它是 否匹配正則表達(dá)式的模式 如果發(fā)現(xiàn)了一次匹配 那么該方法返回t r u e 否則返 回f a l s e r e p l a c e0 方法用指定的字符串替代一個(gè)匹配模式 s p l i t 方法在每次 發(fā)現(xiàn)匹配的位置拆分字符串 返回一個(gè)字符串?dāng)?shù)組 此外 利用m a t c h 類和m a t c h c o l l e c t i o n 類 可以獲得通過(guò)一個(gè)正則表達(dá)式 實(shí)現(xiàn)的每一次匹配的細(xì)節(jié) m a t c h 類代表一次匹配 而m a t c h c o l l e c t i o n 類是一個(gè) m a t c h 對(duì)象的集合 其中每一個(gè)對(duì)象都代表了一次成功的匹配 2 2 3 正則表達(dá)式的基礎(chǔ)語(yǔ)法 正則表達(dá)式的強(qiáng)大不是表現(xiàn)在特定的字符匹配上 而是在字符類型的模式匹 配上 例如匹配空字符 字母 數(shù)字和字母或數(shù)字范圍等 2 2 3 1 字符匹配語(yǔ)法 表2 2 以正則表達(dá)式語(yǔ)法表示的字符類 t a b l e2 2c h a r a c t c a si nr e g u l a re x p r e s s i o n 字符類匹配的字符 示例 d從0 9 的任一數(shù)字 d d 可以匹配1 2 但不匹配a a 或l a d非數(shù)字字符 d d d 匹配a b c a b c 等 但不匹配1 2 3 l 任一單字符 如a z a z 0 9 一 w w w w 匹配1 b a 但不匹配 掌 或4 5 a i r非單詞字符 w 可以匹配 但不匹配a s 任一空白字符 包括了制表符 換匹配所有傳統(tǒng)的空字符 包括用h t m l x 札 行符 回車(chē)符 換頁(yè)符等和其它標(biāo)準(zhǔn)定義的字符 s任一非空白字符每 個(gè)非空字符 如舭3 任一字符 匹配任一字符 但是換行符除外 括號(hào)中的任一字符 a z 匹配a z 的任一字符 非括號(hào)中的任一字符 a b c 匹配小寫(xiě)a b c 除外的任一字符 a z 匹配非a z 的任一字符 7 北京化工大學(xué)碩士學(xué)位論文 表2 2 列出了正則表達(dá)式語(yǔ)法中的特殊字符類 這些特殊字符可以替代一個(gè) 字符 如要匹配格式為0 1 0 8 8 8 8 8 8 5 5 6 6 的電話號(hào)碼 最簡(jiǎn)單的正則表達(dá)式應(yīng)該為 d d d 一 d d d 一 d d d 一 d d d d 2 2 3 2 字符定位語(yǔ)法 定位字符允許規(guī)定匹配模式在字符串中發(fā)現(xiàn)的位置 這個(gè)操作稱為 錨定斗 錨定一可以使正則表達(dá)式的一端固定在字符串中要進(jìn)行匹配的一個(gè)點(diǎn)上 所以 進(jìn)行 錨定 操作可以防止對(duì)整個(gè)字符串進(jìn)行匹配操作 表2 3 列出了幾個(gè)特殊 的定位字符 表2 3 特殊的定位字符 t a b l e 2 3s p e c i a lp o s i t i o n i n gc h a r a c t e r s 定位字符 描述 其后的模式必須在字符串的開(kāi)始處 如果是一個(gè)多行字符串 應(yīng)位于任意一行的 開(kāi)始 對(duì)于多行文本 包含回車(chē)符的字符串 需要設(shè)定m u l t i l i n e 標(biāo)志 s 前面的模式必須在字符串的末尾處 如果是一個(gè)多行字符串 應(yīng)該在任意一行的 末尾 淚前面的模式必須在字符串的開(kāi)始處 并忽略多行標(biāo)志 z 前面的模式必須在字符串的末尾處 并忽略多行標(biāo)志 z前面的模式必須位于字符串的末尾 或是位于換行符前 1 6 匹配一個(gè)單詞邊界 實(shí)質(zhì)上的單詞字符和非單詞字符問(wèn)的點(diǎn) 單詞字符是 a z a z o 一9 中的任一字符 位于一個(gè)單詞的開(kāi)始 b匹配一個(gè)非單詞邊界的位置 即不在一個(gè)單詞的開(kāi)始 在使用正則表達(dá)式對(duì)用戶數(shù)據(jù)進(jìn)行驗(yàn)證時(shí) 通常需要確定用戶只輸入了我們 想要的數(shù)據(jù) 而且在數(shù)據(jù)前后沒(méi)有其它數(shù)據(jù) 這時(shí)定位字符就很有用 如 可以 用礦 表示字符串的開(kāi)始位置 使用 字符以確保模式出現(xiàn)在字符串的結(jié)束 位置 2 2 3 3 重復(fù)匹配語(yǔ)法 重復(fù)字符不但可以壓縮正則表達(dá)式 而且可以指定一個(gè)字符以及字符組出現(xiàn) 的頻率 表2 4 列出了基本的重復(fù)字符 通過(guò)這些重復(fù)字符 可以修改先前定義的電話號(hào)碼的正則表達(dá)式 將原來(lái)的 d d d d d d 一 d d d 一 d d d d 修改為 d 3 d 3 一 d 3 一 d 4 第二章理論基礎(chǔ)與技術(shù)介紹 表2 4 基本的重復(fù)字符 t a b l e 2 4b a s i cr c l m a t 錢(qián) c h a r a c t e r s 重復(fù)字符語(yǔ)法解釋舉例 1 1 匹配前面的字符r 1 次x 2 匹配x x 但不匹配x 或x x x h l 匹配前面的字符i l 次或r 1 次以上x(chóng) f 2 j 匹配2 個(gè)或更多的x 如x x x x x x x x x h i i 匹配前面的字符最少r 1 次 最多i m 次 如果1 1x 2 4 匹配了x x x x x 和x x x 但 為0 可以不指定 不匹配x 或x x x x x 2 匹配前面的字符0 次或1 次 可以省略x 匹配x 或空 匹配前面的字符1 次或多次x 匹配x 或x x 或更多的x 奎 匹配前面的字符0 次或多次 x 宰匹配0 個(gè)或多個(gè)x 2 2 4 分組和捕獲 正則表達(dá)式的一個(gè)很好的特性是可以把字符組合起來(lái) 其方式與c 中的復(fù)合 語(yǔ)句一樣 分組和捕獲是正則表達(dá)式的高級(jí)應(yīng)用 也充分體現(xiàn)了正則表達(dá)式處理 字符串的強(qiáng)大功能 在正則表達(dá)式模式中 可以把任何字符組合起來(lái) 包括元字符 和轉(zhuǎn)義序列 像處理一個(gè)字符那樣處理它們 但是要使用圓括號(hào) 而不是花括號(hào) 得到的序列稱為一個(gè)組 在默認(rèn)情況下 將模式的一部分組合為一個(gè)組時(shí) 就要 求正則表達(dá)式引擎按照這個(gè)組來(lái)匹配 或按照整個(gè)模式來(lái)匹配 簡(jiǎn)言之 可以把 組當(dāng)作一個(gè)要匹配的模式來(lái)返回 如果要把字符串分解為各個(gè)部分 這種模式就 非常有效 其中 用于正則表達(dá)式分組的常見(jiàn)字符有 和 其中 表 示一個(gè)捕獲組 即被模式匹配到的字符作為最終匹配的一部分 表示非捕獲 組 意味著模式所匹配的字符不作為一個(gè)組來(lái)捕獲 但構(gòu)成最后匹配結(jié)果的一部 分 n a m e 表示通過(guò)名稱進(jìn)行捕獲 也代表一個(gè)捕獲組 意味著在組內(nèi)匹配的 字符可以用于反向引用 例如 u r i 的格式是 其中端口是可選的 例 如 h t t p w w w b a i d u c o m 8 0 8 0 假定要從一個(gè)u r i 中提取協(xié)議 地址和端口 而且緊鄰u r i 的后面可能有空白 但沒(méi)有標(biāo)點(diǎn)符號(hào) 就可以使用下面的表達(dá)式 b s s s b 在下面的字符串上運(yùn)行該模式 得到的匹配是 h t t p w w w b a i d u c o m i v ej u s tf o u n dt h i si n t e r e s t i n gu r ia th t t p w h a tw a si t o hy e s h t t p 嗍 b a i d u c o m 在第一個(gè)組 k s 中 有一個(gè)捕獲h t t p 第二個(gè)組也有一個(gè)捕獲 9 北京化工大學(xué)碩士學(xué)位論文 1 哪 b a i d u c o m 但第三個(gè)組沒(méi)有捕獲 因?yàn)樵谶@個(gè)u r i 中沒(méi)有端口號(hào) 另外 雖 然該字符串包含另外一個(gè)h t t p 它匹配于第一個(gè)組 但不會(huì)被搜索出來(lái) 因?yàn)?整個(gè)搜索表達(dá)式不匹配于這部分文本 此外 在上面運(yùn)行模式時(shí)常常需要用到g r o u p 類和g r o u p c o l l e c t i o n 類 g r o u p 類代表了一次匹配中的一個(gè)組 而g r o u p c o l l e c t i o n 類包含了g r o u p 對(duì)象 對(duì)應(yīng) 于一次成功匹配中的每一個(gè)組 2 3x m l 技術(shù)理論 2 3 1x m l 概述 x m l 是可擴(kuò)展標(biāo)記語(yǔ)言 2 5 是一種平臺(tái)無(wú)關(guān)的描述數(shù)據(jù)的方法 甚至可以將其 形容為一種跨平臺(tái)的 與軟 硬件無(wú)關(guān)的 處理信息的工具 x m l 規(guī)范是一組由 w 3 c 萬(wàn)維網(wǎng)聯(lián)盟 定義的規(guī)則 用于用普通的文本描述結(jié)構(gòu)化的數(shù)據(jù) 與h t m l 一 樣 x m l 也建立在放在尖括號(hào)中的標(biāo)記的基礎(chǔ)之上 是s g 地 標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言 針對(duì)特定領(lǐng)域的一個(gè)子集或一種受限形式 其文本本質(zhì)使其數(shù)據(jù)具有高度的可移 植性和廣泛的可部署性 另外 x m l 文檔也可以在任意標(biāo)準(zhǔn)文本編輯器中創(chuàng)建和編 輯 但是 x m l 不是h t m l 的替代品 也不是h t m l 的升級(jí) 它們是兩種不同用途的 語(yǔ)言 其不同之處主要體現(xiàn)在 一方面 x m l 是自由的 可以擴(kuò)展的 它突破了 h t m l h y p e rt e x tm a r k u pl a n g u a g e 超文本標(biāo)記語(yǔ)言 固定標(biāo)記集合的約束 允許 你定義自己的標(biāo)記以及文檔結(jié)構(gòu) 使文件的內(nèi)容更豐富 更復(fù)雜 更容易組成一 個(gè)完整的信息體系 另一方面 h t m l 主要用于顯示信息 而x m l 主要考慮的是數(shù) 據(jù)及其結(jié)構(gòu) 是被用來(lái)存儲(chǔ)數(shù)據(jù) 攜帶數(shù)據(jù)和交換數(shù)據(jù)的 因此 x m l 在其語(yǔ)法規(guī) 則上要嚴(yán)格得多 要求所有的標(biāo)記都有對(duì)應(yīng)的結(jié)束標(biāo)記 不能重疊 2 3 2x m l 的特點(diǎn) 作為一種描述數(shù)據(jù)的語(yǔ)言 x m l 也遵循s g m l 的基本特征 2 6 這些特征是公共 數(shù)據(jù)表示 標(biāo)記應(yīng)可擴(kuò)展和文檔類型需要規(guī)則 其中 公共數(shù)據(jù)表示 或公共數(shù)據(jù) 標(biāo)記 是指不同的計(jì)算機(jī)程序和系統(tǒng)應(yīng)能夠讀寫(xiě)表示相同的信息 標(biāo)記應(yīng)可擴(kuò)展要 求標(biāo)記語(yǔ)言必須具有足夠的擴(kuò)展能力以便支持所有信息類型 文檔類型需要規(guī)則 指必須有一種機(jī)制用來(lái)正式描述由某公共類型文檔共享的規(guī)則 所有遵循x m l1 o 規(guī)則的文檔都稱為格式良好的 m l 文檔 如果格式良好的 x m l 文檔也滿足有效性約束 由d t d 或模式定義 該文檔就稱為有效的x m l 文檔 l o 第二章理論基礎(chǔ)與技術(shù)介紹 格式良好的x 肌文檔必須滿足如下要求 1 x m l 文檔必須有 也只能有一個(gè)根元素 用于包含其它所有內(nèi)容 2 x m l 文檔必須以x 此聲明 開(kāi)始 指定語(yǔ)法遵循 x m l1 0 規(guī)范 3 所有的標(biāo)記必須關(guān)閉 即起始標(biāo)記必須有相應(yīng)的結(jié)束標(biāo)記 例如 它可以包含屬性v a l u e 搿t e s t 一 即 這 個(gè)標(biāo)記必須有一個(gè)對(duì)應(yīng)的結(jié)束標(biāo)記 來(lái)完成 稱為一個(gè)元素 4 x m l 標(biāo)記區(qū)分大小寫(xiě) 5 x 此元素必須正確嵌套 不能交疊 6 一個(gè)元素內(nèi)不能有兩個(gè)同名的屬性 屬性值必須位于引號(hào) 單引號(hào)或雙引號(hào) 內(nèi) 2 3 3x m l 應(yīng)用程序接口 可用于在程序中創(chuàng)建 讀取 分析和處理x 肌文檔的工具有很多 這些工具 的目的是高效地提取存儲(chǔ)在標(biāo)記中的數(shù)據(jù) 而不必分析文檔中的文本 幾乎所有 工具都建立在兩個(gè)標(biāo)準(zhǔn)抽象a p i 的基礎(chǔ)之上 文檔對(duì)象模型d o m 和x m l 簡(jiǎn)單應(yīng)用 程序接口s a x 嘲 i o m 和s a x 在應(yīng)用程序開(kāi)發(fā)過(guò)程中所起的作用如圖2 一l 所示 圈2 一ld o g 和s a 接口示意圖 f i g l l 陽(yáng)2 1s c h e m a t i c so f d o mi n t c f f a c ea n ds a xi n t e r f a c e 從圖中可知 應(yīng)用程序?qū) 肌文檔的操作是間接的 首先 由x m l 分析器對(duì) x m l 文檔進(jìn)行分析 然后 應(yīng)用程序通過(guò)x m l 分析器所提供的d o m 接口或s a x 接口 對(duì)分析結(jié)果進(jìn)行操作 從而間接地實(shí)現(xiàn)了對(duì) i l 文檔的訪問(wèn) 2 3 3 1 文檔對(duì)象模型d o m d o m 可以看作是一個(gè)平臺(tái)或語(yǔ)言中獨(dú)立的界面 它允許程序和腳本動(dòng)態(tài)的訪問(wèn) 以及更新文檔的內(nèi)容 結(jié)構(gòu)以及腳本程序 d o i v l 提供了一組描述h t l i l 以及x m l 文 北京化工大學(xué)碩士學(xué)位論文 件的標(biāo)準(zhǔn)對(duì)象和一個(gè)用來(lái)訪問(wèn)和操作這類文件的標(biāo)準(zhǔn)界面 它分為3 部分 c o r e 核心 定義了一組可用于任何結(jié)構(gòu)文檔的標(biāo)準(zhǔn)對(duì)象 是結(jié)構(gòu)化文檔比較底層的對(duì)象 的集合 x m ld o m 定義了一組x m l 文件的標(biāo)準(zhǔn)對(duì)象 h t m ld 伽 定義了一組h t m l 文件的標(biāo)準(zhǔn)對(duì)象 同時(shí)d o m 還分為l 2 3 共三個(gè)等級(jí) 使用d o m 分析器就可 以把整個(gè)x m l 文檔作為一個(gè)樹(shù) 一次加載到內(nèi)存中 并可以隨時(shí)訪問(wèn)它 搜索和 修改文檔中的任何元素 n o d e 節(jié)點(diǎn)是d o m 中的最基本的對(duì)象 從它又派生出許多 類型的節(jié)點(diǎn) 所有這些節(jié)點(diǎn)組成一棵文件樹(shù) 這棵樹(shù)幾乎包含了x m l 文檔的全部 信息 2 3 3 2x m i 簡(jiǎn)單應(yīng)用程序接口s a g s a x 也是為了處理x m l 定義的一組抽象接口 它采用p u s h 的流模型 像流一 樣逐個(gè)字符地讀取x m l 文檔 在遇到元素和屬性時(shí)生成事件 基于s a x 的分析器 通過(guò)各種通知接口 把這些事件傳遞給應(yīng)用程序 激活相應(yīng)的事件處理函數(shù) 另 外 s a x 沒(méi)有把x m l 文檔完全地加載到內(nèi)存中 所以需要的系統(tǒng)資源較少 是一個(gè) 分析大型x m l 文檔的非常高效的a p i 它的優(yōu)點(diǎn)是當(dāng)它讀到x m l 文檔中每一部分內(nèi) 容的時(shí)候 就會(huì)產(chǎn)生一個(gè)事件 應(yīng)用程序就可以在這個(gè)事件中寫(xiě)入具體的處理代 碼 然后解析器就移動(dòng)到文檔的下 段 因?yàn)閟 a g 以序列的形式處理文檔 和d o m 相比 對(duì)內(nèi)存的需求較少 而且當(dāng)s a x 找到需要的信息時(shí) 它能夠停止對(duì)當(dāng)前文 檔的解析 因此可被認(rèn)為是一個(gè)輕量級(jí)的接口集合 但是因?yàn)槠洳话盐臋n高速緩 存到內(nèi)存中 所以不能檢查文檔的格式是否良好 此外 編寫(xiě)s a x 并不像編寫(xiě)d o m 那樣簡(jiǎn)單 這首先是因?yàn)楸仨殞?shí)現(xiàn)通知接口并維護(hù)狀態(tài) 還因?yàn)閟 a g 不允許對(duì)文 檔進(jìn)行隨機(jī)訪問(wèn) 也沒(méi)有提供像d o m 那樣的編輯功能 s a x 對(duì)x m l 文件進(jìn)行處理的流程如圖2 2 所示 解析 圖2 2s a x 對(duì)x m l 文件進(jìn)行處理的流程圖 f i g u r e2 2f l o wc h a r to f p r o c e s s i n gx m ld o c u m e n t sw i t hs a x 1 2 流 第二章理論基礎(chǔ)與技術(shù)介紹 2 3 4x 札文檔的處理 2 3 4 1x m l r e a d e r 類和x m l w ri t e r 類 在 n e l 中的s y s t e ly d n l 命名空間中 包含x m l r e a d e r 類和x m l w i r t e r 類 它 們分別用于讀取已有的x m l 文檔和創(chuàng)建編寫(xiě)新的x m l 文檔 x m l r e a d e r 是面向流的 它把x m l 文檔看作是文本數(shù)據(jù)流 在流通過(guò)讀取器時(shí) 處理文檔 在數(shù)據(jù)結(jié)構(gòu)中什么都不會(huì)捕獲 如果要繼續(xù)保留某些信息 就必須自 己記錄它 因此其開(kāi)銷(xiāo)很低且效率極高 x m l r e a d e r 不需要內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)來(lái)保 存整個(gè)文檔 只使用查看文檔的當(dāng)前塊時(shí)所需要的內(nèi)存 它有三個(gè)派生類 x m l t e x t r e a d e r 個(gè)高性能的讀取器 把x m l 當(dāng)作文本流來(lái)處理 不需要高速緩 存 實(shí)體解析或驗(yàn)證 但它要求x m l 文檔必須是格式良好的 x m l v a l i d a t i n g r e a d e r 類似于x m l t e x t r e a d e r 但還要針對(duì)d t d x s d 等進(jìn)行驗(yàn)證 x m l n o d e r e a d e r 根據(jù)x m l n o d e 的實(shí)例處理x m l x m l w r i t e r 是一個(gè)基于流的寫(xiě)入器類 它能創(chuàng)建全新的文檔 寫(xiě)入信息 以備 其它程序或用戶使用 它有一個(gè)預(yù)定義的派生類x m l t e x t w r i t e r 這個(gè)類不僅僅可 以寫(xiě)入文本文件 還支持將寫(xiě)入的文本發(fā)送給任何類型的流 2 3 4 2x m i 查詢 目前 被廣泛用于搜索x m l 文檔并檢索特有的組件的技術(shù)是x p a t h x p a t h 是 一個(gè)w 3 c 規(guī)范 可以在x m l 文檔中對(duì)元素或?qū)傩赃M(jìn)行查詢 定位和過(guò)濾 它把x m l 文檔看作是一個(gè)有層次的樹(shù) x p a t h 語(yǔ)言可以表示這個(gè)樹(shù)中從一個(gè)葉子或節(jié)點(diǎn)到另 一個(gè)葉子的路徑 可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市托管班品牌授權(quán)與加盟合同
- 文化產(chǎn)品創(chuàng)意開(kāi)發(fā)合同
- 工業(yè)管道清洗與維護(hù)預(yù)案
- 法律咨詢行業(yè)法律服務(wù)結(jié)果保證書(shū)
- 三農(nóng)行業(yè)三農(nóng)戶教育培訓(xùn)計(jì)劃
- 農(nóng)業(yè)種植養(yǎng)殖合同
- 智能圖書(shū)館管理系統(tǒng)供應(yīng)合同
- 大學(xué)語(yǔ)文辯論賽故事征文
- 高考語(yǔ)文復(fù)習(xí)-文言文專題訓(xùn)練《史記晉世家》
- 會(huì)議紀(jì)要與重要決策執(zhí)行情況跟蹤表
- 四川省建筑行業(yè)調(diào)研報(bào)告
- 北京市豐臺(tái)區(qū)2024-2025學(xué)年高三上學(xué)期期末英語(yǔ)試題
- 2025上海市嘉定工業(yè)區(qū)農(nóng)村青年干部招聘22人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025采購(gòu)部年度工作計(jì)劃
- 2024年度個(gè)人珠寶首飾分期購(gòu)買(mǎi)合同范本3篇
- 食為天:2024中國(guó)食品飲料行業(yè)白皮書(shū)
- 醫(yī)學(xué)倫理與醫(yī)患溝通技巧
- 2025年牛津譯林版英語(yǔ)七年級(jí)下冊(cè)全冊(cè)單元重點(diǎn)知識(shí)點(diǎn)與語(yǔ)法匯編
- 痔瘡中醫(yī)治療課件
- 污水處理設(shè)備的故障處理指南考核試卷
- 華東師范大學(xué)《社會(huì)研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論