什么是EXI高效XML交换 W3C二进制XML标准

10次阅读

EXI是W3C制定的二进制xml交换标准,通过语法结构重编码实现高压缩率与快速解析,解决文本XML体积大、解析慢、内存占用高问题,适用于嵌入式、V2G、iot等资源受限场景。

什么是EXI高效XML交换 W3C二进制XML标准

EXI(Efficient XML Interchange)是W3C制定的二进制XML交换标准,核心目标是把传统文本XML高效压缩为紧凑、可快速解析的二进制流,不是简单打包,而是从语法结构层面重编码

它解决什么问题

XML人类可读、语义清晰,但体积大、解析慢、内存占用高——这对嵌入式设备、车载通信(如V2G充电)、物联网终端等资源受限场景很不友好。EXI直接在二进制层处理XML事件(开始标签、属性、文本、结束标签等),跳过字符解析和字符串比较,大幅降低CPU和带宽开销。

两种主要编码模式

Schema-less(无模式):不依赖XSD,自动学习文档中出现的元素名、命名空间、值等,动态构建字符串表。适合快速适配任意XML,压缩率中等,实现最简单。

Schema-informed(模式感知):提前加载XSD,预填字符串表,并利用类型约束做预测性编码。例如,若XSD规定某元素后必须跟特定子元素,该子元素在流中可编码为0位。这是压缩率最高、解析最快的方式,常用于ISO 15118等工业协议。

关键压缩技术

字符串表复用:元素名、属性名、命名空间URI等重复出现的字符串只存一次,后续用短整数索引代替。

事件驱动编码:不保存尖括号、引号、闭合标签等冗余符号,只记录xml解析器真正需要的“事件”及其参数。

类型感知数值编码:整数、浮点数、布尔值等按实际类型用变长整数(如VLQ)、IEEE 754精简格式等编码,不转成字符串。

和普通ZIP压缩XML的区别

• ZIP/GZIP是对文本XML做通用字节流压缩,仍需先解析完整XML才能解压使用;EXI解码后可直接生成SAX/dom事件或对象,边解码边处理。

• 同样内容,EXI体积通常只有原始XML的1%–5%,远高于ZIP(一般压缩到30%–50%);在V2G实测中可达1/100。

• EXI支持数字签名场景下的规范化(Canonical EXI),确保逻辑等价的XML生成完全一致的二进制,这点ZIP做不到。

text=ZqhQzanResources