我正在寻找一种有效的方法来处理性能因素(RAM 和 CPU)严重受限的嵌入式设备上的 xml 数据。 XML 的优点是可以通过基于计算机的软件工具轻松处理。一旦数据被建模并加载到嵌入式设备,它就保持静态。
我认为二进制 XML 表示是正确的选择。但是我应该遵循哪个转换标准,或者我什至应该创建一些全新的东西?
要求:
- 明确的编码规则,从而得到确定性的二进制格式
- 有效随机访问二进制数据(下一个元素)
- 通过 C-Data-Structures 轻松访问
示例数据:
<Employee>
<Name>
<GivenName>Gaston</GivenName>
<FamilyName>Lagaffe<FamilyName>
</Name>
<innovation>
<description>Cosmo-coucou : horloge murale imitant la cabine Apollo </description>
<drawing>604</drawing>
</innovation>
<innovation>
<description>Parapluie simulateur de beau temps </description>
<drawing>648</drawing>
</innovation>
最后,使用C轻松处理二进制数据的能力(例如将数据提取到结构中等)是需要遵守的最重要的要求。
struct Employee {
name *name;
innovation *inovations;
};
struct name {
char *GivenName;
char *FamilyName;
};
struct innovation {
char *Description;
int drawing;
};
可以asn1c帮我解决这个问题吗?
使用 ASN.1 编码规则可以完成这项工作吗?
您对嵌入式设备上的二进制 XML 数据有何体验?
最佳答案
如果您的XML数据是通过XML模式描述的,您可以使用基于X.694(http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=9612&lang=en)的工具自动将XML模式转换为ASN.1,例如OSS Nokalva(http://www.oss.com/xml/products/xsdasn1/xsdasn1.html)提供的工具。然后,您可以使用 ASN.1 工具从生成的 ASN.1 模式生成 C 结构,然后以 BER、DER 或 PER 格式对消息进行编码/解码。
如果严格遵循此过程,您还可以通过将 ASN.1 (E-XER) 扩展 XML 编码规则应用于您的数据,对符合原始 XML 模式的 XML 数据进行编码和解码。
关于c - 嵌入式设备的二进制 XML 表示和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521084/