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

Delphi Discussion :

[D6 => XML] Récupération de données dans une balise


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 34
    Points
    34
    Par défaut [D6 => XML] Récupération de données dans une balise
    Bonjour.
    Voila j'essaie de lire un fichier XML et j'essaie de récuperer des donnée de celui-ci.
    voici sa structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <aaa>
       <bbb>
          <ccc>donnée 1</ccc>
          <ddd ss:type='donnée 2'/>
       </bbb>
    </aaa>
    La donnée 1 pas de problème.
    par contre la donnée 2 je n'arrive pas.
    Pourriez-vous m'eclairer ?

    PS : Le "ss:" est present dans de nombreux endroit du fichier. savez-vous a quoi il correspond ?

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    bonjour,

    il manque /ddd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <aaa>
    <bbb>
    <ccc>donnée 1</ccc>
    <ddd ss:type='donnée 2'/ddd>
    </bbb>
    </aaa>
    Sauf erreur, "ss:" correspond au schema XML (fichier .xsd).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    bonjour,

    ton exemple de fichier xml est sans doute un extrait.
    J'ai pris ça pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <ss:aaa xmlns:ss='http://bidon'>
       <bbb>
          <ccc>donnée 1</ccc>
          <ddd ss:type='donnée 2'/>
       </bbb>
    </ss:aaa>
    et dans un onclick d'un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.BLoadClick(Sender: TObject);
    var
       data1, data2 : string;
       nodebbb : IXMLNode;
    begin
         XMLDoc.LoadFromFile('test.xml');
         nodebbb := XMLDoc.DocumentElement.ChildNodes[0];
         data1 := nodebbb.ChildNodes.Nodes['ccc'].NodeValue;
         data2 := nodebbb.ChildNodes.Nodes['ddd'].Attributes['ss:type'];
         memo.Clear;
         memo.Lines.Add('data1 : '+data1);
         memo.Lines.Add('data2 : '+data2);
    end;
    pour le 'ss', je ne suis pas spécialiste mais va voir du coté des namespace dans les fichier xml

    bon surf !!
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  4. #4
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Citation Envoyé par Graffito
    bonjour,

    il manque /ddd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <aaa>
    <bbb>
    <ccc>donnée 1</ccc>
    <ddd ss:type='donnée 2'/ddd>
    </bbb>
    </aaa>
    Ceci est faux.

    tu ecris soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise>ici la valeur</balise>
    soit si tu n'as pas de valeur qui est l'équivalent de donc dans le cas proposé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <aaa>
    <bbb>
    <ccc>donnée 1</ccc>
    <ddd ss:type='donnée 2'/>
    </bbb>
    </aaa>
    est parfaitement juste. C'est juste une balise sans valeur avec un attribut.
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

  5. #5
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Citation Envoyé par Graffito
    Sauf erreur, "ss:" correspond au schema XML (fichier .xsd).
    Bin, il y a erreur...
    ss: correspond à un espace de nom, pas à un shéma XML.

    Ceci dit, la réponse est bien donnée par nihao.
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 34
    Points
    34
    Par défaut
    Merci pour ses reponses mais adaptant cela a mon code ca marche pas ...

    Je vous monstre les valeur exacte que je dois recup :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
      <?xml version="1.0" ?> 
    - <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:sc="http://www.spigao.com/scribe">
    + <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
      <Author>xxxxxxx</Author> 
            ...
      <Version>10.2625</Version> 
      </DocumentProperties>
    + <CustomDocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
      <NomStd dt:dt="string">SARTY2</NomStd> 
        ...
      </CustomDocumentProperties>
    + <Styles>
      <Style ss:ID="Default" ss:Name="Normal" /> 
    - <Style ss:ID="s21">
      <Alignment ss:Vertical="Top" /> 
      <Borders /> 
      <Font ss:Size="9" /> 
      <Interior /> 
      <NumberFormat /> 
      <Protection /> 
      </Style>
    ....
      </Styles>
    + <Names>
      <NamedRange ss:Name="EURO" ss:RefersTo="=6.55957" /> 
      <NamedRange ss:Name="TVA" ss:RefersTo="=0.196" /> 
      </Names>
    - <Worksheet ss:Name="SARTY2">
    + <Names>
      <NamedRange ss:Name="Title" ss:RefersTo="R1C2" /> 
                 ...
      <NamedRange ss:Name="L_0_53" ss:RefersTo="=SARTY2!R233" /> 
      </Names>
    - <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="233" x:FullColumns="1" x:FullRows="1" ss:StyleID="s21" ss:DefaultColumnWidth="60">
      <Column ss:StyleID="s22" ss:AutoFitWidth="0" ss:Width="45.75" /> 
    ....
    - <Row ss:AutoFitHeight="0" ss:Height="36">
    - <Cell ss:Index="2" ss:StyleID="s23">
      <Data ss:Type="String">DEPARTEMENT DES HAUTS DE SEINE</Data> 
      <NamedCell ss:Name="Title" /> 
    + <Comment>
      <ss:Data>Numéro du dossier : 569291</ss:Data> 
      </Comment>
      </Cell>
      <sc:ILM sc:Name="1" sc:Type="T" sc:Level="0" /> 
      </Row>
    voila en rouge ce sont les données que je dois récuperer.
    Les info dans <Data> j'y arrive comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      nodeXml := XMLDoc.ChildNodes.Nodes['Workbook'].ChildNodes.Nodes['Worksheet'].ChildNodes.Nodes['Table'].ChildNodes.Nodes['Row'];
      data := nodeXml.ChildNodes['Cell'].ChildNodes['Data'].NodeValue;

  7. #7
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vType := nodeXml.ChildNodes['Cell'].ChildNodes['sc:ILM'].AttributesNodes['sc:Type'].NodeValue;
    Ca fonctionne ?
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 34
    Points
    34
    Par défaut
    oui ca me prend bien la 1ere donnée (apres de devrai bouclé)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 34
    Points
    34
    Par défaut
    Non ca marche pas.
    meme en aillant corriger l'erreur de AttributeNode (pas de S ^^).
    meme en enlevent le childNodes['Cell'] (car il est pas dans cell sc:ILM)

    Ma variable TypeD renvoie un resultat Null.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 67
    Points : 102
    Points
    102
    Par défaut
    essaye ça :

    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
     
    procedure TForm1.BLoadClick(Sender: TObject);
    var
       data1, data2 : string;
       scuri : widestring;
       node,node1,node2 : IXMLNode;
    begin
         XMLDoc.LoadFromFile('test.xml');
         node := XMLDoc.DocumentElement;
         scuri := node.FindNamespaceURI('sc');
         node := node.ChildNodes['Worksheet'].ChildNodes['Table'].ChildNodes['Row'];
         data1 := node.ChildNodes['Cell'].ChildNodes['Data'].NodeValue;
         node2 := node.ChildNodes.FindNode('ILM',scuri);
         data2 := node2.GetAttributeNS('Type',scuri);
    end;
    "Ce n'est pas parce que les choses sont difficiles qu'elles nous font peur, c'est parce qu'elles nous font peur qu'elle sont difficiles"

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 34
    Points
    34
    Par défaut
    Merci infiniment !!!!
    ca marche !!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération de données dans une URL
    Par sissi25 dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2007, 19h23
  2. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  3. Récupération de données dans une popup de modification
    Par Sandara dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/06/2006, 16h03
  4. [D6 => XML] Récupération de données avec une boucle.
    Par Bason_sensei dans le forum Delphi
    Réponses: 1
    Dernier message: 23/05/2006, 13h50
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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