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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.