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

Lazarus Pascal Discussion :

XML en Lazarus


Sujet :

Lazarus Pascal

  1. #1
    Nouveau Candidat au Club Avatar de Fenryan22
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut XML en Lazarus
    Bonjour,

    je suis tout nouveau dans le monde de Lazarus que j'ai préféré au C# en raison de sa portabilité. Une des fonctions du programme que je voudrais mettre en place est de convertir un fichier xml afin de le placer dans une base de donnée sous Mysql. Au niveau base de donnée et requête Sql je gère assez bien, mais j'ai du mal avec le xml ^^''

    le corps du fichier xml est toujours le suivant :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <programme id="blablabla" stop="valeur" start="autrevaleur">
    <title>Assp </title>
    <desc>Un programme que j'écris ...</desc>
    </programme>
    <programme id="blablabla" stop="valeur" start="autrevaleur">
    etc etc

    En lisant les différentes doc j'arrive à avoir le contenu des balises title et desc sans aucun problème et à les stocker dans une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
    doc : TXMLDocument;
    racine : TDOMElement;
    liste, lst,lv  : TDOMNodeList;
    taille, etaille, i, j : LongWord;
    un, deux : string
     begin
       ofd.Execute;
       ReadXMLFile(Doc, ofd.FileName);
       racine:=doc.DocumentElement;
       liste:=racine.GetElementsByTagName('programme'); // racine
       // premier enregistrement
       lst:=liste.Item[0].GetChildNodes;
       un:=lst.Item[0].TextContent;
    là où je seche pour le moment est pour obtenir la valeur des différents attributs de la balise programme (id,stop,start), après pour moi ce n'est qu'un problème de boucle à faire et de requête. Mais comment peut_on récupérer la valeur de ces attributs ?

    Merci pour votre aide, j'ai passé des heures à lire la doc mais là je sature un peu.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    dans les exemples de Lazarus, il y a un lecteur de fichiers XML --> Lazarus/examples/xmlreader , tu pourrais regarder comment sont lus les attributs des balises XML.

    Avec ceci comme fichier XML :
    <?xml version="1.0"?>
    <TEST>
    <programme id="blablabla" stop="valeur" start="autrevaleur">
    <title>Assp </title>
    <desc>Un programme que j'écris ...</desc>
    </programme>
    <programme id="blablabla2" stop="valeur2" start="autrevaleur2">
    <title>Assp2 </title>
    <desc>Un autre programme que j'écris ...</desc>
    </programme>
    </TEST>
    j'obtiens ceci avec le programme de test xmlreader :

    Nom : Capture-TestXMLReader.png
Affichages : 689
Taille : 32,2 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Citation Envoyé par Fenryan22 Voir le message
    pour obtenir la valeur des différents attributs de la balise programme (id,stop,start).
    Bonjour

    L'astuce c'est que les tags sont rattachés à un nœud fictif enfant du principal.

    Voici un petit exemple tiré de mon jeu de scrabble, qui lit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <parties>
    <partie id=1 createur=moi />
    </parties>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ValeurTag ( const Node : TDomNode; const NomTag : string): string ;
     
    var
      Node2 : TDomNode;
     
    begin
      result := '';
      Node2 := Node.Attributes.GetNamedItem(NomTag);
      if not assigned(Node2) then
        Raise Exception.Create ('Tag nommé non trouvé : '+ NomTag );
      result := Node2.NodeValue;
    end;


    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
     
     
     
    var
      { ... }
      Node : TDOMNode ;
     
    begin
      Node := Noeud( Doc, 'parties');
      if Node = nil then
        exit ;
      Node := Node.FirstChild;
      while Assigned(Node) and (Node.NodeName='partie') do
      begin
        Partie_lue.id_partie := ValeurTag(Node, 'id');
        Partie_lue.createur := ValeurTag(Node, 'par');
     
     
        { ... }
        Node := Node.NextSibling ;
      end;
    end;
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  4. #4
    Nouveau Candidat au Club Avatar de Fenryan22
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour vos différents tuyaus, finalement j'ai procédé ainsi pour obtenir les attributs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    racine:=doc.DocumentElement;
    liste:=racine.GetElementsByTagName('programme'); // racine
    // **** boucle etc etc 
    code := liste.Item[i].Attributes[0].TextContent; // <- je récupère la valeur de l'attribut
    nom := liste.Item[i].GetChildNodes[0].TextContent; // <- je récupère la valeur du noeud enfant

  5. #5
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour

    Il ne faut pas oublier qu'en XML l'ordre des tags n'est pas garanti, et qu'il doit normalement pouvoir s'en insérer de nouveaux sans casser l'existant.
    Donc, les extraire dans un tableau indicé numériquement peut être risqué, ou doit s'accompagner de précautions particulières.
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

Discussions similaires

  1. xml -> xsl -> xml
    Par virgile04 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/10/2002, 16h53
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  4. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 12h07
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

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