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

C 嵌入式设备的二进制XML表示与处理,c,xml,embedded,asn.1,C,Xml,Embedded,Asn.1,我正在寻找一种在性能因素(RAM和CPU)非常有限的嵌入式设备上处理xml数据的有效方法。 XML的优点是它可以很容易地被基于计算机的软件工具处理。一旦数据建模并加载到嵌入式设备,它将保持静态 我认为二进制XML表示是一条出路。但我应该遵循哪种转换标准,或者我甚至应该创造一些全新的东西 要求: 明确的编码规则,从而形成确定性的二进制格式 对二进制数据的有效随机访问(下一个元素) 通过C数据结构轻松访问 示例数据: <Employee> <Name> <G

我正在寻找一种在性能因素(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>
你能帮我吗

使用ASN.1编码规则可以完成这项工作吗


您在嵌入式设备上使用二进制XML数据的经验如何?

如果您的XML数据由XML模式描述,您可以使用基于X.694()的工具(如OSS Nokalva()提供的工具)自动将XML模式转换为ASN.1。然后,您可以使用ASN.1工具从生成的ASN.1模式生成C结构,然后用BER、DER或PER对消息进行编码/解码。
如果严格遵循此过程,还可以通过对数据应用ASN.1(E-XER)的扩展XML编码规则,对符合原始XML模式的XML数据进行编码和解码。

请参阅:了解一些相关信息。还有和佩奇。
struct Employee {
   name *name;
   innovation *inovations;
};

struct name {
    char *GivenName;
    char *FamilyName;
};

struct innovation {
    char *Description;
    int  drawing;
};