EXI Prototype for .NET

使用OSS Nokalva的EXI工具.NET為您的XML數(shù)據(jù)實現(xiàn)前所未有的緊湊性。 OSS EXI Tools for .NET是一組實現(xiàn)高效XML交換(EXI)格式1.0(第二版)W3C推薦標(biāo)準(zhǔn)的工具。
OSS EXI工具.NET允許.NET應(yīng)用程序讀取和寫入符合EXI推薦標(biāo)準(zhǔn)的數(shù)據(jù)流。

EXI是W3C推薦的高效XML交換(EXI)格式1.0(第二版)中指定的XML的非常緊湊的表示。與標(biāo)準(zhǔn)(文本)XML相比,EXI提高了串行化和解析速度,并允許更有效地使用內(nèi)存和電池壽命。 EXI流通常比等效的XML文檔小很多倍,并且需要較少的CPU時間來讀取或?qū)懭搿?/span>
EXI可以對XML文檔進(jìn)行編碼的兩種主要方式 - 無模式模式和模式通知模式。在無模式模式下,無論模式是否可用于編碼器,EXI都可以編碼任何XML文檔。在模式通知模式下,EXI具有利用從XML模式提取的信息的獨(dú)特能力,以提高編碼的效率,而不需要通常嚴(yán)格遵守數(shù)據(jù)到模式。然而,如果用戶確定數(shù)據(jù)將根據(jù)模式有效,則EXI編碼甚至可以更有效。
使用模式信息使得EXI編碼更有效,因為它允許EXI處理器在EXI流內(nèi)的任何點(diǎn)處對流中的下一項做出某些預(yù)測。例如,如果模式指定元素“A”(在特定上下文中)必須總是后跟元素“B”,則當(dāng)前一元素為“A”時元素“B”的出現(xiàn)被編碼為零位(在嚴(yán)格模式下)。
在無模式模式中,在編碼或解碼操作期間,EXI處理器基于迄今遇到的文檔的實際內(nèi)容連續(xù)地修改對每個項目進(jìn)行編碼的方式。例如,當(dāng)EXI編碼器在元素“P”的內(nèi)容中遇到元素“C”時,假設(shè)當(dāng)當(dāng)前父元素是元素時,名為“C”的元素比具有其他名稱的元素具有更高的出現(xiàn)概率命名為“P”,并且創(chuàng)建縮寫方式以編碼在名為“P”的元素下名為“C”的元素的出現(xiàn)。下一次在名為“P”的元素(具有相同名稱的相同或后續(xù)元素)下遇到名為“C”的元素時,EXI編碼器將能夠使用“C”的縮寫編碼,從而節(jié)省空間。
總之,EXI的用戶可以在三個主要選項之間進(jìn)行選擇:(a)根本不使用模式(無模式),(b)以僅支持有效XML文檔(模式通知,嚴(yán)格)的方式使用模式,和(c)以支持與模式的偏離的方式使用模式(模式通知的,非嚴(yán)格的)。模式通知,嚴(yán)格模式是三者中最高效的。無模式模式是最容易使用的,因為它不涉及模式。
與許多其他XML壓縮技術(shù)一樣,EXI使用字符串表臨時存儲正在編碼的XML文檔中出現(xiàn)的某些類型的字符串,例如命名空間URI,本地名稱,屬性值等,以允許后續(xù)出現(xiàn)的相同字符串使用短字符串標(biāo)識符進(jìn)行編碼。在無模式模式中,所有字符串表在編碼或解碼操作開始時被復(fù)位。在模式通知模式中,包含命名空間URI和本地名稱的字符串表預(yù)填充了從模式中提取的字符串或在XML模式建議中定義的字符串,以便那些字符串在每個編碼或解碼操作開始時就已經(jīng)知道。
EXI中有其他選項影響EXI流的內(nèi)容。其中一些選項,稱為保真選項,控制EXI處理器在EXI流中包括某些類型的項目的能力,例如XML注釋,處理指令和命名空間聲明。如果用戶對在EXI編碼中保留的這樣的項目之一不感興趣,則他們可以通過不必包括該類型的項目來選擇將使得EXI編碼更有效的選項。因此,例如,如果用戶聲明命名空間聲明和前綴不需要保留,則EXI流編碼器將放棄編碼這些東西的能力,并且所得到的EXI流可以更緊湊。還有另一個保真選項,它控制使用簡單類型保存屬性和元素的原始字符串值。當(dāng)未選擇此選項時,將更有效地編碼這些值(例如,類型為xsd:integer的屬性值將被編碼為二進(jìn)制整數(shù)而不是字符串),但讀者無法重建讀回EXI流時的精確原始字符串。在許多應(yīng)用中,這種信息丟失是可接受的,因此不應(yīng)該選擇該選項。
EXI的最后一個主要特性是支持字節(jié)對齊和壓縮。用戶可以選擇四個對齊選項之一:(a)位打包對齊,(b)字節(jié)對齊對齊,(c)預(yù)壓縮和(d)壓縮。位打包和壓縮是更緊湊的(壓縮通常,但不總是,比位打包更緊湊)。位填充和字節(jié)對齊是較快的(字節(jié)對齊可能比位填充稍快)。預(yù)壓縮和壓縮都將EXI流內(nèi)的編碼數(shù)據(jù)排列成特定的布局,其中可能相似的所有編碼數(shù)據(jù)項都靠近在一起。這種布置提高了應(yīng)用于數(shù)據(jù)的壓縮算法的有效性。預(yù)壓縮本身不執(zhí)行任何壓縮,因為它的唯一目的是為外部壓縮步驟(EXI處理器外部)準(zhǔn)備要應(yīng)用于EXI流的EXI流。壓縮進(jìn)一步并且將標(biāo)準(zhǔn)DEFLATE算法應(yīng)用于類似編碼數(shù)據(jù)項的每個塊,以產(chǎn)生最終的EXI流。

組件
OSS EXI工具包括兩個主要組件:
•模式預(yù)處理器實用程序(ossEXIpre.exe)和
•EXI / .NET運(yùn)行時庫(ossEXIdn.dll)。
模式預(yù)處理器實用程序是讀取XML模式并生成序列化模式文件的命令行應(yīng)用程序。 作為模式預(yù)處理器輸入的模式必須包含符合W3C XML模式1.0的一個或多個模式文檔文件。 輸出是一個XML文件(序列化模式文件),它傳遞從模式提取的信息,并以專有格式表示,這是EXI / .NET運(yùn)行時庫理解的。 EXI的無模式模式不需要使用模式預(yù)處理器。
模式預(yù)處理功能也可在EXI / .NET運(yùn)行時庫中使用。
EXI / .NET運(yùn)行時庫是一個.NET DLL,用于讀取和寫入EXI流以及將XML文檔和片段轉(zhuǎn)換為EXI和將EXI流轉(zhuǎn)換為XML。
京ICP備09015132號-996 | 違法和不良信息舉報電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動畫