我正在寻找一种有效的方法来处理嵌入式设备上的xml数据,而这些设备的性能因素(RAM和CPU)非常有限。 XML的优点是可以通过基于计算机的软件工具轻松处理。数据建模并加载到嵌入式设备后,它将保持静态。
我认为二进制XML-Representation是要走的路。但是我应该遵循哪种转换标准,还是应该创造一些全新的东西?
要求:
示例数据:
<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数据有什么经验?
答案 0 :(得分:3)
如果您的XML数据由XML架构描述,您可以使用基于X.694(http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=9612&lang=en)的工具(例如OSS Nokalva提供的工具)自动将XML架构转换为ASN.1( http://www.oss.com/xml/products/xsdasn1/xsdasn1.html)。然后,您可以使用ASN.1工具从生成的ASN.1模式生成C结构,然后以BER,DER或PER编码/解码您的消息。
如果严格遵循此过程,您还可以通过将ASN.1的扩展XML编码规则(E-XER)应用于数据来对符合原始XML模式的XML数据进行编码和解码。