在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式環(huán)境下Web Service技術(shù)的實(shí)現(xiàn)

            嵌入式環(huán)境下Web Service技術(shù)的實(shí)現(xiàn)

            作者: 時間:2012-03-21 來源:網(wǎng)絡(luò) 收藏

            2.2.2 XML解析
            SOAP消息是由XML語言組成的,因此對XML的解析是處理SOAP消息的一個重點(diǎn)。當(dāng)今有2種流行的XML解析API,它們是DOM(Document Obj ect Model)和SAX(Simple API for XML),盡管這兩種方法都能用來解析XML數(shù)據(jù),但相互間卻有很多本質(zhì)的不同:DOM一次性把整個XML文檔讀入內(nèi)存并建立完整的樹結(jié)構(gòu),而SAX則基于事件驅(qū)動模型,一次只讀取一個XML元素,每當(dāng)遇到一個讀取事件時就會觸發(fā)一個事件處理器。兩種方法各有優(yōu)缺點(diǎn):DOM在處理單個元素之前必須把其他所有的元素都讀入內(nèi)存建立樹結(jié)構(gòu),這既費(fèi)時間又費(fèi)內(nèi)存,在這方面SAX的性能
            更為優(yōu)異,但DOM一旦建立樹結(jié)構(gòu)之后,就可以方便地處理文檔中的任意元素,因?yàn)檎麄€XML結(jié)構(gòu)都在內(nèi)存里,而SAX則必須從頭逐個解析XML文檔每一個元素,直到需要的那個元素。
            考慮到SOAP消息的解析是一次性的過程,不需要進(jìn)行元素的隨機(jī)訪問,而且下資源有限,為此采用SAX做為XML的解析方式。定義以下結(jié)構(gòu)體用來存儲節(jié)點(diǎn)結(jié)構(gòu)。
            e.JPG
            另外建立一個列表用來存儲XML文檔中聲明的命名空間,避免XML文檔里的元素名或?qū)傩悦嗷ブg可能會發(fā)生的語義沖突。在XML文檔的解析過程中,保留當(dāng)前節(jié)點(diǎn)及其父節(jié)點(diǎn)的結(jié)構(gòu)體,除此之外的節(jié)點(diǎn)在讀取完畢后立即釋放其占用的資源,必要時還可以關(guān)閉對節(jié)點(diǎn)屬性的解析,進(jìn)一步降低內(nèi)存消耗。當(dāng)遇到新的讀取事件時(節(jié)點(diǎn)開始、節(jié)點(diǎn)結(jié)束、發(fā)現(xiàn)節(jié)點(diǎn)值),將此次事件的相關(guān)信息作為參數(shù)傳入回調(diào)函數(shù),在回調(diào)函數(shù)中對節(jié)點(diǎn)信息進(jìn)行處理:
            f.JPG
            2.2.3 具體服務(wù)
            為了方便查找服務(wù),程序里將所有支持的服務(wù)函數(shù)的名稱以及對應(yīng)的命名空間預(yù)先保存在一個列表中。當(dāng)進(jìn)入XML解析的回調(diào)函數(shù)后,根據(jù)XML節(jié)點(diǎn)的節(jié)點(diǎn)名稱以及命名空間,首先試圖從列表中搜索本次SOAP消息所請求的服務(wù),如果所請求的服務(wù)函數(shù)存在,則將XML節(jié)點(diǎn)信息傳入該服務(wù)函數(shù)對應(yīng)的初始化函數(shù),完成對服務(wù)函數(shù)的參數(shù)列表的初始化,為之后的服務(wù)函數(shù)執(zhí)行做好準(zhǔn)備。圖3給出了該過程的程序框圖。XML解析完畢后退出XML解析器,此時服務(wù)函數(shù)也已經(jīng)完成初始化,直接調(diào)用服務(wù)函數(shù)的執(zhí)行部分,并將結(jié)果打包成SOAP格式發(fā)送回客戶端。鑒于動態(tài)生成XML文檔需要耗費(fèi)較多的資源,程序中為每個服務(wù)函數(shù)預(yù)存了一個模板,模板中已經(jīng)定義好了回復(fù)消息的整體結(jié)構(gòu),僅需在服務(wù)函數(shù)被實(shí)際調(diào)用后往模板中填入結(jié)果即可,另外可以在發(fā)送回復(fù)消息的過程中復(fù)用之前的接收緩沖區(qū),這樣一來同時節(jié)省了處理時間和資源消耗。

            本文引用地址:http://www.biyoush.com/article/149382.htm

            g.JPG

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            c++相關(guān)文章:c++教程




            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉