第二章 EXI协议原理与实现--7.5 Efficient XML库和OpenEXI.jar编解码交叉测试

7.5 Efficient XML库和OpenEXI.jar编解码交叉测试

本节对Efficient XML库和OpenEXI.jar库进行编解码交叉测试,目的是验证Efficient XML库的兼容性。

7.5.1 测试方案

目标文件: flightdata.xml、flightdata.xsd、flightdata.cxs

由于efficientXML库默认使用compress压缩选项,而ISO15118系统中不使用option,所以针对有无oprion设计两套测试方案:

(1)有compress压缩选项

测试示例代码结果:

自编自解 encode、decode [default option: compress]

自编他解 encode、OpenEXI.jar [default option: compress]

他编自解 OpenEXI.jar、decode [default option: compress]

他编他解 OpenEXI.jar、OpenEXI.jar [default option: compress]

(2)无compress压缩选项

关闭掉compress选项,重新测试结果:

自编自解 encode、decode [default option: compress=false]

自编他解 encode、OpenEXI.jar [default option: compress=false]

他编自解 OpenEXI.jar、decode [default option: compress=false]

他编他解 OpenEXI.jar、OpenEXI.jar [default option: compress=false]

7.5.2 有compress压缩选项

测试结果如下:

1自编自解 encode、decode [default option: compress]

运行encode程序,得到flightdata.xml编码后的文件-- flightdata-xcode.xml.exi:

运行decode程序,对flightdata-xcode.xml.exi解码,输出的文件flightdata-xcode-out.xml内容与flightdata.xml完全相同。

2自编他解 encode、OpenEXI.jar [default option: compress]

运行encode程序,得到flightdata.xml编码后的文件-- flightdata-xcode.xml.exi。

使用OpenEXI.jar解码,必须选中Alignment:compress选项:

解码输出文件-- flightdata-xcode.xml_decode.xml

除了域名空间不同,二者内容完全相同。表明解码成功。

3他编自解 OpenEXI.jar、decode [default option: compress]

使用OpenEXI.jar编码输出文件--flightdata_encode.exi,字节内容与自编结果有所差异,字节数相差1:

除了长度不同,字节内容也不同:

现在使用decode解码 flightdata_encode.exi文件,成功得到解码内容 flightdata-xcode-out.xml:

与原始文件比较完全相同,说明解码成功。

4他编他解 OpenEXI.jar、OpenEXI.jar [default option: compress]

解码选项:

输出文件 flightdata_encode_decode.xml

与原始内容比较, 只有域名空间差异,内容一致:

7.5.3 无compress压缩选项

测试结果:

1 自编自解 encode、decode [default option: compress=false]

运行encode程序,得到flightdata.xml编码后的文件-- flightdata-xcode.xml.exi:

运行decode程序,得到解码后的文件-- flightdata-xcode-out.xml:

内容与flightdata.xml完全相同。

2 自编他解 encode、OpenEXI.jar [default option: compress=false]

运行encode程序,得到flightdata.xml编码后的文件-- flightdata-xcode.xml.exi。

使用OpenEXI.jar解码,必须选中Alignment:bitPacked选项:

解码输出文件-- flightdata-xcode.xml_decode.xml

除了域名空间不同,内容完全相同。表明解码成功。

3 他编自解 OpenEXI.jar、decode [default option: compress=false]

使用OpenEXI.jar编码输出文件--flightdata_encode.exi,字节内容与自编结果完全一致:

运行decode程序,解码成功。

4 他编他解 OpenEXI.jar、OpenEXI.jar [default option: compress=false]

输出文件 flightdata_encode_decode.xml

与原始内容比较, 只有域名空间差异,内容一致:

【测试结论】

经过有option/无option选项编解码,自编他解/他编自解,表明efficientXML 编解码功能与OpenEXI.jar完全兼容,输出结果是一致的。唯一的差别是OpenEXI.jar 多输出了两个标准域名空间,域名符号不同,但是这都不影响正常使用。

相关推荐
快活林高老大2 天前
第二章 EXI协议原理与实现--5 EXICodec.jar软件分析
iso15118·exi
快活林高老大3 天前
第二章 EXI协议原理与实现--7 Efficient XML编码分析(7.1~7.4)
iso15118·exi