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

标签 c xml embedded asn.1

我正在寻找一种有效的方法来处理性能因素(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/

相关文章:

java - 解析 xml 时内部标签的困难

android - 如何在android嵌入式卡中设置文本()

c - float 及其对 8 位微 Controller 存储器的影响

c - 寻找改进的想法

c - 如何使用数组用 C 中的单个空格替换(多个)空白字符(空格、制表符、换行符)的所有实例?

php - 当 XML 具有 PHP 扩展时,浏览器无法正确显示带有 CSS 的 XML

C++ 禁用静态变量的析构函数

web-services - 物联网设备如何连接到服务器

c - 数组索引大小

c - 这段 C 代码是如何工作的?