IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Génération de code C à partir de XML


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 1
    Par défaut 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 : 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.

  2. #2
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Bonjour,

    Parmi les outils de génération automatique de code, certaines font du XML data binding.
    Ils prennent en entrée un document qui décrit un format de XML, par exemple une DTD XML, et produisent en sortie des structures/classes et des fonctions capables de manipuler les XML qui correspondent à ce format.

    Par contre, parmi ces outils, ça m'étonnerait qu'il y en ait qui initialisent à ta place ta structure à partir d'un fichier XML directement lors de la génération du code. A quoi diable cela servirait-il ? Si tu veux que ce XML fasse partie du programme, tu peux toujours considérer que ce XML fait partie des sources du programme (au même titre que tes fichiers ".c" et ".h") et charger ce XML dans une structure à l'ouverture du programme. L'avantage, c'est que, quand tu éditeras ton fichier XML, tu n'auras pas besoin de recompiler le code.

    Pour revenir au XML data binding, dans un moteur de recherche, en tapant XML data binding c language, je suis tombé sur ça : https://sourceforge.net/projects/xmel/
    Je ne l'ai pas testé. Je ne sais pas ce que ça vaut.

    Une solution moins sophistiquée est de "tout" coder soi-même, en s'appuyant toutefois sur une bibliothèque qui permet de manipuler des XML.
    Par exemple, en langage C, il y a libxml.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2009, 15h59
  2. génération de code C++ à partir d'un dessin
    Par safwa dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/04/2008, 22h02
  3. Réponses: 2
    Dernier message: 25/04/2008, 12h57
  4. Génération de fichiers XLS à partir de XML
    Par neril dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/01/2007, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo