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

XML Discussion :

[libxml2] Création d'un fichier XML


Sujet :

XML

  1. #1
    Nouveau membre du Club
    [libxml2] Création d'un fichier XML
    Bonjour à tous,

    j'aimerai générer un fichier XML en c++, j'ai vu pas mal de tuto et de code pour lire et récupérer des informations d'un xml, mais ce qui m'intéresse, c'est d'en créer un.

    Voici un exemple de mon test.xml que j'aimerai avoir:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Items>
      <Item>
        <Name>toto</Name>
        <Number>1</Number>
      </Item>
      <Item>
        <Name>titi</Name>
        <Number>0.94902</Number>
      </Item>
    </Items>


    J'utilise libxml2
    Est-ce que quelqu'un aurai un exemple de code simple ?

    Voila ce que j'ai pour l'instant :
    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
     
    xmlDocPtr xmlDoc;
    xmlNodePtr root_node, node, node2;
     
    xmlDoc = xmlNewDoc(BAD_CAST "1.0") ;
     
    root_node = xmlNewNode(NULL, BAD_CAST "Items");
    xmlDocSetRootElement(xmlDoc, root_node);
     
    node = xmlNewChild(root_node, NULL, BAD_CAST "Item", NULL);
    xmlNewProp(node, BAD_CAST "Name", BAD_CAST "toto");
    xmlNewProp(node, BAD_CAST "Number", BAD_CAST "1");
     
    node2 = xmlNewChild(root_node, NULL, BAD_CAST "Item", NULL);
    xmlNewProp(node2, BAD_CAST "Name", BAD_CAST "titi");
    xmlNewProp(node2, BAD_CAST "Number", BAD_CAST "0.94902");
     
    xmlFreeDoc(xmlDoc);


    Merci d'avance

  2. #2
    Nouveau membre du Club
    j'ai trouvé, il suffisais d'ajouter :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    xmlSaveFile( "-" , xmlDoc );
    xmlSaveFormatFileEnc( "test.xml" , xmlDoc, "UTF-8", 1);


    Pour info le code proposé ci-dessus ne fonctionnait pas correctement, au lieu d'avoir
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Item>
        <Name>toto</Name>
        <Number>1</Number>
      </Item>


    j'obtenait :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    <Item Name="toto" Number ="1" />


    la solution est de faire
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    node = xmlNewChild(root_node, NULL, BAD_CAST "Item", NULL);
    xmlNewChild(node, NULL, BAD_CAST "Name", BAD_CAST "toto");
    xmlNewChild(node, NULL, BAD_CAST "Number", BAD_CAST "1");