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

embedded/2025/3/25 6:06:56/

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 多输出了两个标准域名空间,域名符号不同,但是这都不影响正常使用。


http://www.ppmy.cn/embedded/174633.html

相关文章

ManiWAV:通过野外的音频-视频数据学习机器人操作

24年6月来自斯坦福大学、哥伦比亚大学和 TRI 的论文“ManiWAV: Learning Robot Manipulation from In-the-Wild Audio-Visual Data”。 音频信号通过接触为机器人交互和物体属性提供丰富的信息。这些信息可以简化接触丰富的机器人操作技能学习,尤其是当视觉信息本身…

kotlin 内联函数 inline

高阶函数实现的原理:函数类型其实是生成了一个对象 。 inline翻译成中文的意思就是内联,在kotlin里面inline被用来修饰函数,表明当前函数在编译时是以内嵌的形式进行编译的,从而减少了一层函数调用栈: inline fun fun…

手机电脑如何通过跨平台远程控制工具来实现无缝互联

在如今数字化办公和生活的场景里,远程控制工具已经成了连接各种设备的关键桥梁。不管是跨系统协作、远程技术支持,还是让移动端和电脑端高效联动,用户对这些工具的要求早就从“能用就行”变成了“得用得顺手”。 接下来,我就从跨平…

Python 在自然语言处理(NLP)领域的应用场景和技术实现方式

Python 在自然语言处理(NLP)领域拥有丰富的应用场景和技术实现方式,涵盖从基础文本处理到复杂的深度学习模型构建。以下是基于搜索结果的详细分类总结: 一、基础文本处理任务 文本预处理 功能:清洗噪音(如H…

LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(下)

前面两节课程分别给大家介绍了“控制器连接、定时获取轴状态、轴坐标、控制器型号、轴参数设置、IO控制、Basic文件下载”(详情点击→LabVIEW运动控制(二):EtherCAT运动控制器的多轴示教加工应用(上)&#…

存储过程在高并发环境下的重要性

在高并发系统中,数据库的性能和稳定性至关重要。随着系统并发请求的增加,SQL 语句的执行效率、事务管理以及锁机制的优化成为核心问题。存储过程(Stored Procedure)作为数据库内部的执行逻辑,能够有效提升高并发环境下…

在 ARM 嵌入式 Linux 下使用 C/C++ 实现 MQTT

在 ARM 嵌入式 Linux 下使用 C/C 实现 MQTT 通信是一个常见的需求,尤其是在资源受限的环境中。以下是一个详细的教程,使用 Eclipse Paho C Client 库来实现 MQTT 客户端。 1. 安装 Eclipse Paho C Client 库 Eclipse Paho C Client 是一个轻量级的 MQTT…

鸿蒙 元服务摘要

元服务(原名原子化服务),是HarmonyOS提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用&am…