嵌入式设备的二进制XML表示和处理

时间:2013-05-13 11:36:36

标签: c xml embedded asn.1

我正在寻找一种有效的方法来处理嵌入式设备上的xml数据,而这些设备的性能因素(RAM和CPU)非常有限。 XML的优点是可以通过基于计算机的软件工具轻松处理。数据建模并加载到嵌入式设备后,它将保持静态。

我认为二进制XML-Representation是要走的路。但是我应该遵循哪种转换标准,还是应该创造一些全新的东西?

要求:

  • 清除编码规则,因此确定二进制格式为结果
  • 对二进制数据的有效随机访问(下一个元素)
  • 通过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数据有什么经验?

1 个答案:

答案 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数据进行编码和解码。