PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Extraction de données XML
Extraction de données XML
Débuté par Charles Bidard, 29 mar. 2017 08:56 - 4 réponses
Posté le 29 mars 2017 - 08:56
Bonjour ! ;)

Je rencontre quelque problème avec l'utilisation du XML, malgré un consultation minutieuse de la doc, je n'arrive pas à me dépatouiller avec mes fichier XML.

La situation est la suivante :
- Fichier XML
- Je dois tirer des données depuis les attributs et les valeurs de différents nœud
- Certains nœuds peuvent êtres présent plusieurs fois au même niveaux.
- Certains nœuds de nom similaire sont présent à des niveaux différent et renferme des informations différentes.

Voici un exemple de la syntaxe XML de mon fichier :
<?xml version=1.0 encoding="UTF-8"?>
<Document>
<head>
<date>20.02.2017</date>
</head>
<entries>
<entry>
<date>19.02.2017</date>
<montant devise="EURO">2500.65</montant>
</entry>
<entry>
<date>20.02.2017</date>
<montant devise="EURO">2500.12</montant>
</entry>
</entries>
</Document>

A partir de ce fichier, j'aimerai pouvoir retirer les informations suivantes :
- La valeur du noeud "date" dans head
- Un tableau des noeuds "entry"
- Valeur des noeuds + attributs des "entry" dans le tableau

Mes tentatives se sont jusque la révélé futiles, j'arrive à charger le fichier XML dans une variable de type xmlDocument, j'arrive à visualiser le code source XML à partir de cet variable, mais je n'arrive pas à descendre dans les niveaux. J'ai tenté quelque chose comme ca :
Trace(viXMLSource.Document.head.SourceXML)

Mais cela n'affiche rien et ne renvoie pas d'erreur.

Est-que quelqu’un ferait preuve de bonne volonté et m'éclairerai de sa lanterne ? ;(
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 29 mars 2017 - 09:32
Bonjour

Pourquoi ".SourceXML" ? C'est bien ".Date" que vous vouliez lire non ?

Trace(viXMLSource.Document.head.date)


Note : vous pouvez importer votre exemple XML directement dans le projet (créez un fichier .xml et importez le dans le projet) : un élément XML apparaît dans l'explorateur de projet
Un drag'n drop de cet élément depuis l'explorateur de projet vers le code créera la déclaration d'un xmlNoeud.
A partir de ce xmlNoeud, vous aurez la complétion pour accéder à vos données.
Vous obtiendrez du code comme ci-dessous.

viXMLSource est un xmlDocument <Description="test"> = XMLOuvre("D:\Tests\test.xml")
Trace(viXMLSource.Document.head.date)
Posté le 29 mars 2017 - 10:00
Bonjour,
Avec le document donné en référence, je propose cette syntaxe:
trace(viXMLSource.Document.head.date..texte)
trace(viXMLSource.Document.entries.entry[1].date..texte)

Tu peux aussi utiliser un POUR TOUT pour boucler sur les entrées:
POUR TOUT EntreeCourante de viXMLSource.Document.entries sur entry
trace(EntreeCourante.date..texte)
FIN

Frédéric.

"Charles Bidard" a écrit dans le message de groupe de discussion :
2017c5f071d091e112ae61333b72ef9b3f17@news.pcsoft.fr...

Bonjour ! ;)

Je rencontre quelque problème avec l'utilisation du XML, malgré un
consultation minutieuse de la doc, je n'arrive pas à me dépatouiller avec
mes fichier XML.

La situation est la suivante :
- Fichier XML
- Je dois tirer des données depuis les attributs et les valeurs de
différents nœud
- Certains nœuds peuvent êtres présent plusieurs fois au même niveaux.
- Certains nœuds de nom similaire sont présent à des niveaux différent et
renferme des informations différentes.

Voici un exemple de la syntaxe XML de mon fichier :
<?xml version=1.0 encoding="UTF-8"?>
<Document>
<head>
<date>20.02.2017</date>
</head>
<entries>
<entry>
<date>19.02.2017</date>
<montant devise="EURO">2500.65</montant>
</entry>
<entry>
<date>20.02.2017</date>
<montant devise="EURO">2500.12</montant>
</entry>
</entries>
</Document>

A partir de ce fichier, j'aimerai pouvoir retirer les informations suivantes
:
- La valeur du noeud "date" dans head
- Un tableau des noeuds "entry"
- Valeur des noeuds + attributs des "entry" dans le tableau

Mes tentatives se sont jusque la révélé futiles, j'arrive à charger le
fichier XML dans une variable de type xmlDocument, j'arrive à visualiser le
code source XML à partir de cet variable, mais je n'arrive pas à descendre
dans les niveaux. J'ai tenté quelque chose comme ca :
Trace(viXMLSource.Document.head.SourceXML)

Mais cela n'affiche rien et ne renvoie pas d'erreur.

Est-que quelqu’un ferait preuve de bonne volonté et m'éclairerai de sa
lanterne ? ;(
Posté le 29 mars 2017 - 10:00
Charles Bidard a écrit :
Bonjour ! ;)

Je rencontre quelque problème avec l'utilisation du XML, malgré un consultation minutieuse de la doc, je n'arrive pas à me dépatouiller avec mes fichier XML.


Bonjour

Relisez la doc
- xmlDocument (type de variable) : https://doc.pcsoft.fr/fr-FR/index.awp?1000018782
- xmlNoeud (type de variable) : https://doc.pcsoft.fr/fr-FR/?1000018786&name=xmlnoeud_type_variable
- xmlAttribut (type de variable) : https://doc.pcsoft.fr/fr-FR/?1000018799&name=xmlattribut_type_variable
- Exemples d'utilisation des types XML : https://doc.pcsoft.fr/fr-FR/?3081042

Voyez les propriétés et retenez que
- xmlDocument a une propriété ..NoeudRacine, qui est un tableau de xmlNoeuds
- xmlNoeud a deux propriétés qui vous intéressent dans le cas présent :
..Attribut qui est un tableau de xmlAttributs et
..NoeudFils qui est un tableau de xmlNoeuds

Après cela, il vous suffit de parcourir les tableaux.

Bonnes lectures et bon travail

Hemgé
Posté le 29 mars 2017 - 10:25
Merci pour toutes vos réponses, elles m'ont bien aidé ! J'arrive maintenant à obtenir les informations qu'il me fallait !