| |
Posté le 24 mai 2016 - 11:07 |
Bonjour à tous,
Y aurait-il parmi vous, des personnes qui travaillent sur des fichiers XML afin d'en extraire les données ?
J'aurais besoin d'aide pour ce genre de travail.
Merci à tous pour votre aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2016 - 11:41 |
Le 24/05/2016 à 09:07, BUCAMP a écrit :
Bonjour à tous,
Y aurait-il parmi vous, des personnes qui travaillent sur des fichiers XML afin d'en extraire les données ?
J'aurais besoin d'aide pour ce genre de travail.
Merci à tous pour votre aide.
F. BUCAMP Je travaille sur des Fichiers XML Incorporation des fichiers XML des labos ... etc C'est à voir quels genre de fichiers liste ou individuel BOn windev |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 258 messages Popularité : +35 (37 votes) |
|
Posté le 24 mai 2016 - 12:11 |
Bonjour,
Voici un exemple de lecture de donnée :
SourceXML est une chaîne = fChargeTexte(Dossier_MAJ_Serveur+"\DATA_USER\COMMUN\WD53_BDD_Commande_en_retard.xml") sMonDocXML = "XML" XMLDocument(sMonDocXML, SourceXML) XMLRacine(sMonDocXML) XMLFils(sMonDocXML) XMLFils(sMonDocXML) XMLFils(sMonDocXML) XMLDernier(sMonDocXML) nDerniere_date est un entier = XMLDonnée(sMonDocXML)
Voici la syntaxe du fichier XML :
-- Baptiste CLOART Consultant b.cloart@blv-tech.com 06.88.74.80.65 www.linkedin.com/in/cloart |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2016 - 12:11 |
Merci pour votre aide.
Le fichier dont je dois extraire les données est un flux XML comportant les renseignements de chaque abonné au niveau de la consommation d'eau (code, nom, index lu, rue, etc...).
Pourriez-vous m'aider dans ce cas ?
Merci.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2016 - 12:19 |
Merci pour l'aide.
Je dois récupérer les données de tous les abonnés consommant de l'eau. Ainsi pour chaque abonné, je dois récupérer le code, les identités, le dernier index relevé par le portable.
Il faut donc que je lise le flux XML dans son intégralité et extraire les données de chaque abonné.
Pourriez-vous m'aider ?
Merci.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 258 messages Popularité : +35 (37 votes) |
|
Posté le 24 mai 2016 - 12:20 |
BUCAMP,
Avec l'exemple que je t'ai fourni sur mon dernier message tu a toute pour réussir ce que tu veux Si tu souhaite une aide approfondi, tu peux m'envoyer un mail b.cloart@blv-tech.com
-- Baptiste CLOART Consultant b.cloart@blv-tech.com 06.88.74.80.65 www.linkedin.com/in/cloartMessage modifié, 24 mai 2016 - 12:21 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 256 messages Popularité : +29 (29 votes) |
|
Posté le 24 mai 2016 - 14:40 |
Bonjour
Si le format du XML est fixe, il est également possible d'importer le fichier XML directement dans l'éditeur de WINDEV. Les différents éléments du XML sont ensuite facilement utilisables avec coloration, assistance, ...
d est un XMLDocument = XMLOuvre("...") Trace(d.racine.balise) |
| |
| |
| | | |
|
| | |
| |
Posté le 24 mai 2016 - 16:20 |
Le 24/05/2016 à 10:11, BUCAMP a écrit :
Merci pour votre aide.
Le fichier dont je dois extraire les données est un flux XML comportant les renseignements de chaque abonné au niveau de la consommation d'eau (code, nom, index lu, rue, etc...).
Pourriez-vous m'aider dans ce cas ?
Merci.
F. BUCAMP Transmettez moi une fois l'un de vos fichier mais il ne devrait pas y avoir trop de problème |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2016 - 11:57 |
Bonjour,
Le problème se pose car pour une balise, il existe plusieurs attributs. Je ne peux pas (règle de confidentialité) ni donner un fichier ni l'écrire.
exemple : - <Essai> <sousessai1 Tol1="5" Tol2="4" Max1="200" Max2="150"
Comment lire l'un des attributs ? Dans l'aide de PCSOFT, une balise n'a qu'un attribut.
Merci pour votre aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2016 - 15:25 |
Bonjour,
Il est vrai que c'est plus facile mais comment parcourir ce flux XML pour extraire les données une à une pour les ajouter dans un fichier windev qui serait rempli au fur et à mesure de la lecture du flux XML ? Les XMLPremier, XMLSUivant ne fonctionnent pas pour cela.
Y aurait-il une solution ?
Merci pour votre aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 25 mai 2016 - 16:58 |
Bonjour
encore plus simple.
Tu importe le XML dans l'ANALYSE... et ensuite, hlitpremier/suivant
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Plus d'information sur http://fabriceharari.com |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 09:23 |
Le 25/05/2016 à 09:57, BUCAMP a écrit :
Bonjour,
Le problème se pose car pour une balise, il existe plusieurs attributs. Je ne peux pas (règle de confidentialité) ni donner un fichier ni l'écrire.
exemple : - <Essai> <sousessai1 Tol1="5" Tol2="4" Max1="200" Max2="150"
Comment lire l'un des attributs ? Dans l'aide de PCSOFT, une balise n'a qu'un attribut.
Merci pour votre aide.
F. BUCAMP
Pour ma part j'ai été confronté à ce problème Tu dois prendre ta Balise et lire le contenu ici table ajouteligne... chez toi tu remplis ton champs désolé pour les espacements
XMLRacine("CMONDOC") XMLRecherche("CMONDOC","Patient") SI XMLTrouve("CMONDOC") ALORS xMLFils("CMONDOC") SI PAS XMLEnDehors("CMONDOC") ALORS XMLFils("CMONDOC")
SI PAS XMLEnDehors("CMONDOC") ALORS XMLPremier("CMONDOC") TANTQUE PAS XMLEnDehors("CMONDOC") SI XMLNomElément("CMONDOC") = "data" ALORS XMLFils("CMONDOC") TANTQUE PAS XMLEnDehors("CMONDOC") nligne= 2 TableAjouteLigne(TABLEDN,XMLDonnée("CMONDOC")) XMLSuivant("CMONDOC") FIN XMLParent("CMONDOC") FIN XMLSuivant("CMONDOC") FIN FIN FIN FIN
e |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 10:39 |
Bonjour Fabrice,
J'ai déjà essayé cette importation de l'XML.
Il y a tout de même un problème : - tous les abonnés sont bien importés. - le détail concernant chaque abonné (dans une balise fils) n'est pas importé correctement. Il n'y a que les données du premier abonné qui sont importées.
Je ne peux donc pas récupérer les données de chaque abonné.
Qu'en penses-tu ?
Merci pour ton aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 15:51 |
Bonjour,
On manipule les fichiers XML - soit par le biais d'un document texte et de la fonction XMLDocument() (et de la cohorte de fonctions qui lui sont associées). Voir la réponse de Baptiste CLOART en début de discussion. Je suppose que dans cette configuration que je n'utilise pas, sauf fonction spécifique, une méthode serait d'isoler le chaîne des attributs et puis de procéder par ExtraitChaîne avec le caractère espace comme séparateur. - soit avec la variable XMLDocument et les variables qui lui sont associées (essentiellement XMLNoeud et XMLAttribut), auquel cas tout se 'résume' à des parcours de tableaux. Par exemple, un XMLNoeud a une propriété ..Attribut qui est en fait un tableau des attributs de ce nœud. Le principe de tout ceci est illustré par un exemple dans la doc ( http://doc.pcsoft.fr/fr-FR/?3081042&name=Exemple_utilisation_des_types_XML ). L'utilisation des variables spécifiques est maintenant (ce n'était pas le cas dans ma version 18) conseillé comme la méthode de choix.
Bonne lecture
Hemgé |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 26 mai 2016 - 17:28 |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 18:12 |
Bonjour Emgé,
Merci pour ton conseil.
Je rencontre quelques problèmes : - la lecture qui commence à la racine, ne commence la lecture des Abonnés qu'à partir du n°2. - je ne souhaite pas tout lire mais seulement quelques données pour chaque Abonné.
Est-ce possible de modifier le code pour pouvoir choisir les données à extraire et les ajouter un fichier FIC ?
Merci pour tout aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 18:12 |
Bonjour Emgé,
Merci pour ton conseil.
Je rencontre quelques problèmes : - la lecture qui commence à la racine, ne commence la lecture des Abonnés qu'à partir du n°2. - je ne souhaite pas tout lire mais seulement quelques données pour chaque Abonné.
Est-ce possible de modifier le code pour pouvoir choisir les données à extraire et les ajouter un fichier FIC ?
Merci pour tout aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 18:16 |
Bonsoir Emgé,
Merci pour ton conseil.
Je rencontre tout de même des problèmes. - la trace est complète sauf qu'après la racine, c'est l'Abonné n° 2 qui commence la suite. - je n'ai pas besoin de toutes les balises et attributs mais quelques données pour chaque Abonné et les ajouter dans un fichier FIC.
Est-ce possible ?
Merci pour ta réponse.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 18:23 |
Bonsoir Jurassic,
Je possède le flux XSD que j'ai importé dans Windev.
J'ai importé cette description mais : - les Abonnés sont bien importés mais les données spécifiques à chaque Abonné ne le sont pas. Seules les données du premier Abonné sont importés.
Est-ce normal ?
Merci pour ton aide.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 26 mai 2016 - 19:02 |
Bonsoir Jurassic,
Comment déclares-tu la variable "elem". Si je la déclare en xmlNoeud, la ligne "elem:ID" provoque une erreur : "il n'existe pas de parcours de type xmlNoeud sur un élément de xmlAttribut.
Si la délcare en xmlAttribut, "elem:ID", les deux points sont des opérateurs interdits.
Que faire ?
Merci pour ton aide.
F. BUCAMP
-- Cordialement.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 26 mai 2016 - 23:02 |
elem n'a pas besoin d'être déclarée car c'est une variable de type classe dynamique :
POUR TOUT [ELEMENT] <Variable> [, <Clé> [, <Compteur>]] DE <Tableau> <Variable> : Variable exactement du même type que les éléments du tableau. Pour des tableaux de classe, la variable doit être de type Classe dynamique. Il n'est pas nécessaire de déclarer cette variable.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Posté le 26 mai 2016 - 23:19 |
Bonsoir
Ce qu'il y a de simple avec la variable XMLDocument, c'est qu'on travaille avec des propriétés dont certaines sont des tableaux ... qu'il suffit de parcourir comme n'importe quel tableau en testant ou en filtrant etc. L'exemple que je vous avais indiqué me semble limpide, du moins après une bonne lecture de la doc.
Apparemment, vous vous agitez beaucoup, mais sans lire la doc calmement et complètement.
Par exemple, concernant le nœud, qui vous pose tellement de problème, il me semble que toutes les précisions que vous demandez sont exposées dans la doc sur cette variable ( http://doc.pcsoft.fr/fr-FR/?1000018786&name=TYPE_xmlNoeud )
Evidemment qu'il n'existe pas de parcours de type nœud sur un xmlAttribut. Tout d'abord, cela découle des règles de formation des documents XML (que vous devriez sans doute également appréhender). Mais, même sans se préoccuper de ces règles, il apparaît bien dans la doc sur xmlNoeud que cette variable possède parmi ses propriétés une propriété ..Attribut (la première par ordre alphabétique) qui est un "Tableau de xmlAttribut", soit un "Tableau des attributs XML associés au nœud". De même, il existe une propriété ..NoeudFils qui est un "Tableau de xmlNoeud", soit un "Tableau des nœuds fils." Etc.
Donc, vous devez lire et assimiler, puis tester. Et relire.
Quant au fait que ceci ou cela ne fonctionne pas, il faut relire votre code (que nous ne connaissons pas) et éventuellement voir les données (qui sont, elles, confidentielles). Difficile de se prononcer dans ces conditions. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 29 mai 2016 - 09:43 |
Bonjour Jurassic,
J'ai deux difficultés : l'Abonné 1 n'est pas intégré. "POUR TOUT" commence au deuxième rengistrement. Comment intégrer deux renseignements ayant les mêmes noeuds ?
Merci pour ton aide.
F. BUCAMP
-- Cordialement.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 29 mai 2016 - 10:16 |
hello, peux-tu mettre dans le forum le début de ton fichier xml (jusqu'au deuxième abonné par exemple) en remplaçant les données confidentielles ( nom adresse par exemple) par des données "bidon".
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 29 mai 2016 - 15:00 |
Bonjour Ami Calmant,
Pourrais-tu me transmettre ton adresse mail car je n'arrive pas à te transmettre une image JPG du flux XML que j'obtiens.
Merci.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 29 mai 2016 - 15:04 |
Hemgé a écrit :
Bonsoir Ce qu'il y a de simple avec la variable XMLDocument, c'est qu'on travaille avec des propriétés dont certaines sont des tableaux ... qu'il suffit de parcourir comme n'importe quel tableau en testant ou en filtrant etc. L'exemple que je vous avais indiqué me semble limpide, du moins après une bonne lecture de la doc. Apparemment, vous vous agitez beaucoup, mais sans lire la doc calmement et complètement. Par exemple, concernant le nœud, qui vous pose tellement de problème, il me semble que toutes les précisions que vous demandez sont exposées dans la doc sur cette variable ( http://doc.pcsoft.fr/fr-FR/?1000018786&name=TYPE_xmlNoeud ) Evidemment qu'il n'existe pas de parcours de type nœud sur un xmlAttribut. Tout d'abord, cela découle des règles de formation des documents XML (que vous devriez sans doute également appréhender). Mais, même sans se préoccuper de ces règles, il apparaît bien dans la doc sur xmlNoeud que cette variable possède parmi ses propriétés une propriété ..Attribut (la première par ordre alphabétique) qui est un "Tableau de xmlAttribut", soit un "Tableau des attributs XML associés au nœud". De même, il existe une propriété ..NoeudFils qui est un "Tableau de xmlNoeud", soit un "Tableau des nœuds fils." Etc. Donc, vous devez lire et assimiler, puis tester. Et relire. Quant au fait que ceci ou cela ne fonctionne pas, il faut relire votre code (que nous ne connaissons pas) et éventuellement voir les données (qui sont, elles, confidentielles). Difficile de se prononcer dans ces conditions.
Je peux envoyer un flux xml de ce genre de fichier, légèrement modifié tant au niveau des données que des noms des balise, noeuds et attributs. Comment puis-je vous envoyer ce flux ? Merci.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 30 mai 2016 - 03:13 |
hello, pourquoi ne fais-tu pas un copier coller du début de ton fichier XML en modifiant les données confidentielles dans un message ici dans le forum en utilisant la balise CODE (1ère icone insérer du code et choisir XML et mettre le code XML à l'intérieur). Une image c'est pas terrible car il faut retaper le texte.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 6 messages |
|
Posté le 30 mai 2016 - 08:32 |
Bonjour,
1. Mainteant, par quel hasard, le premier abonné apparaît ? Mystère. Cela fonctionne donc. 2. Pour récupérer deux fois les renseignements d'une même balise, noeud ou attribut, il siffisait de mettre [1] puis [2]. Le problème peut se poser si l'abonné n'a qu'un seul relevé et non deux au niveau de "Histoire" (Ind1 et Ind2)
<?xml version="1.0" encoding="UTF-8"?>
-<EssaiJeu XMLVersion="v1.00" Name="Essai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<JEU Code="1" Id="2" Nom="RELEVE">
-<JEUSettings>
<JEUJeuSet EDeb5="5" EDeb4="15" EDeb3="20" EDeb2="25" EDeb1="30" MaxNum4="200" MaxNum3="150" MaxNum2="100" MaxNum1="50" Num1="0"/>
</JEUSettings>
-<JEUData>
-<Abonnes>
-<Personne Code="4001" Nom="AAAA" IdAbon="4001" Modifie="true" Cree="true" Ville="JOBARD" CP="20000 " Addresse="1 RUE PRINCIPALE" Prenom="BBBB">
-<RefComp>
-<InfoComp Code="4001" Modifie="true" Cree="true" AutoLect="false" NumFile="1" Message="" Lecture="" NumComp="15BA079436 " Type2="0" Energie="2" NbDec="3" Dents="8" Type1="0">
-<InfComp>
<InfCompSp Nom="DIAMETRE" Diam="15"/>
</InfComp>
-<Histoires>
<Histoire Type1="0" Ind1="427" Date1="2014-02-27T00:00:00"/>
<Histoire Type2="1" Ind2="556" Date2="2015-05-14T00:00:00"/>
</Histoires>
</InfoComp>
</RefComp>
</Personne>
-<Personne Code="4002" Nom="CCCC" IdAbon="4002" Modifie="true" Cree="true" Ville="JOBARD" CP="20000 " Addresse="33 RUE PRINCIPALE" Prenom="DDDD">
-<RefComp>
-<InfoComp Code="4002" Modifie="true" Cree="true" AutoLect="false" NumFile="2" Message="" Lecture="" NumComp="15BA079465 " Type2="0" Energie="2" NbDec="3" Dents="8" Type1="0">
-<InfComp>
<InfCompSp Nom="DIAMETRE" Diam="15"/>
</InfComp>
-<Histoires>
<Histoire Type1="0" Ind1="41" Date1="2014-02-28T00:00:00"/>
<Histoire Type2="1" Ind2="108" Date2="2015-05-14T00:00:00"/>
</Histoires>
</InfoComp>
</RefComp>
</Personne>
-- Cordialement.
F. BUCAMP |
| |
| |
| | | |
|
| | |
| |
Posté le 30 mai 2016 - 10:02 |
Hemgé a écrit :
Bonsoir
Ce qu'il y a de simple avec la variable XMLDocument, c'est qu'on travaille avec des propriétés dont certaines sont des tableaux ... qu'il suffit de parcourir comme n'importe quel tableau en testant ou en filtrant etc. L'exemple que je vous avais indiqué me semble limpide, du moins après une bonne lecture de la doc.
Bon,
Maintenant, nous avons un aperçu de l'XML. Nous n'avons toujours pas votre code.
A ce stade, réduits à cette espèce d'unijambisme, qu'attendez-vous de nous et qu'espérez-vous que nous puissions faire, à part gloser et supputer ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 30 mai 2016 - 17:48 |
hello, il est bizarre ton xml avec les - devant certaines balises . En le remodelant comme cela:
<?xml version="1.0" encoding="UTF-8"?> <EssaiJeu XMLVersion="v1.00" Name="Essai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <JEU Code="1" Id="2" Nom="RELEVE"> <JEUSettings> <JEUJeuSet EDeb5="5" EDeb4="15" EDeb3="20" EDeb2="25" EDeb1="30" MaxNum4="200" MaxNum3="150" MaxNum2="100" MaxNum1="50" Num1="0"/> </JEUSettings> <JEUData> <Abonnes> <Personne Code="4001" Nom="AAAA" IdAbon="4001" Modifie="true" Cree="true" Ville="JOBARD" CP="20000 " Addresse="1 RUE PRINCIPALE" Prenom="BBBB"> <RefComp> <InfoComp Code="4001" Modifie="true" Cree="true" AutoLect="false" NumFile="1" Message="" Lecture="" NumComp="15BA079436 " Type2="0" Energie="2" NbDec="3" Dents="8" Type1="0"> <InfComp> <InfCompSp Nom="DIAMETRE" Diam="15"/> </InfComp> <Histoires> <Histoire Type1="0" Ind1="427" Date1="2014-02-27T00:00:00"/> <Histoire Type2="1" Ind2="556" Date2="2015-05-14T00:00:00"/> </Histoires> </InfoComp> </RefComp> </Personne> </Abonnes> </JEUData> </JEU> </EssaiJeu> j'arrive à l'importer en description XML dans windev |
| |
| |
| | | |
|
| | |