2013-05-13 65 views
2

我正在尋求一種有效的方法來處理嵌入式設備上的xml數據,這些數據的性能因素非常有限(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> 

最後輕鬆地與ç對待這個二進制數據,如提取數據到結構等的能力,以符合最重要的要求。

struct Employee { 
    name *name; 
    innovation *inovations; 
}; 

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

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

可以asn1c幫我這個嗎?

使用ASN.1編碼規則可以完成這項工作嗎?

您對嵌入式設備上的二進制XML數據有什麼經驗?

+0

請參見:[在語言中序列化數據...](http://stackoverflow.com/questions/144435/whats-the-best-way-to-serialize-data-in-a-language-independent-二進制格式)的一些相關信息。還有[CodeSynthesis XSD/e](http://www.codesynthesis.com/products/xsde/)和[Wikipedia data binding](http://en.wikipedia.org/wiki/XML_data_binding)頁面。 – 2013-05-13 20:33:07

回答

3

如果XML數據由XML模式描述,則可以使用基於X.694(http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=9612&lang=en)的工具(如OSS Nokalva(http://www.oss.com/xml/products/xsdasn1/xsdasn1.html)提供的工具)自動將XML模式轉換爲ASN.1。然後,您可以使用ASN.1工具從生成的ASN.1模式生成C結構,然後使用BER,DER或PER對消息進行編碼/解碼。
如果嚴格遵循此過程,則還可以通過將ASN.1(E-XER)的擴展XML編碼規則應用於數據,對符合原始XML模式的XML數據進行編碼和解碼。