Génération de code C à partir de XML
J'ai un fichier XML contenant des paramètres de configuration. Comment puis-je générer automatiquement des fichiers .h and.c qui contiennent les structures de données équivalentes à celles du fichier XML? Le code c généré, doit initialiser les structures avec de les valeurs correspondantes du fichier XML?
Par exemple, si j'ai un fichier XML comme ceci:
Code:
1 2 3 4 5 6 7 8 9
| <ADC instance=ADC1>
<init>
< ClockPrescaler>ADC_CLOCKPRESCALER_PCLK_DIV4</ClockPrescaler>
<Resolution>12b</Resolution>
< ScanConvMode> DISABLE < /ScanConvMode>
< NbrOfConversion>1</NbrOfConversion>
</init>
</ADC> |
Le code doit générer automatiquement une structure et initialiser la structure:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| typedef struct
{
uint32_t ClockPrescaler;
uint32_t Resolution;
uint32_t ScanConvMode;
uint32_t NbrOfConversion;
uint32_t EOCSelection;
uint32_t ContinuousConvMode;
uint32_t DiscontinuousConvMode;
uint32_t DataAlign;
uint32_t NbrOfDiscConversion;
}ADC_InitTypeDef;
typedef struct
{
char Instance;
ADC_InitTypeDef Init;
}ADC_HandleTypeDef
ADC_HandleTypeDef hadc1;
int main(void)
{
void MX_ADC1_Init(void) /* ADC1 init function */
{
/**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
hadc1.Init.Resolution = 12b;
hadc1.Init.ScanConvMode = DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1; |
Comment je dois procéder? Générer automatiquement le code selon le contenu fichier xml? Est ce qu'il de librarie ou un outil à utiliser?Merci.