2

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

我认为二进制 XML 表示是要走的路。但是我应该遵循哪个转换标准,或者我应该创造一些全新的东西?

要求:

  • 清除编码规则,从而获得确定性二进制格式作为结果
  • 对二进制数据的有效随机访问(下一个元素)
  • 通过 C 数据结构轻松访问

示例数据:

<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 数据有何经验?

4

1 回答 1

3

如果您的 XML 数据由 XML 模式描述,您可以使用基于 X.694 的工具(http://www.itu.int/ITU-T/recommendations/rec)自动将 XML 模式转换为 ASN.1。 aspx?rec=9612&lang=en),例如 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 数据进行编码和解码。

于 2013-05-13T18:18:22.453 回答