Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Parcour d'un fichier XML sous windev 7.5

5 réponses
Avatar
Portishead
//Appel de ma procédure d'affichage de mon service WEB
aff_prod()

SourceXML est une chaîne
//Chargement du contenu XML
SourceXML = fChargeTexte(aff_prod())
XMLDocument("DocXML2", aff_prod())


//Création du document XML
SI ErreurDétectée ALORS
Erreur("Le document n'est pas au format XML")
FIN

XMLPremier("DocXML2")
TANTQUE PAS XMLEnDehors("DocXML2") //Boucle pour l'affichage de mon contenue
de fichier XML
//Recherche de mes valeurs
XMLRecherche("DocXML2", "id_produit", XMLBalise)
SI XMLTrouve("DocXML2") ALORS
idproduit = XMLDonnée("DocXML2") FIN
XMLRecherche("DocXML2", "ref_produit", XMLBalise)
SI XMLTrouve("DocXML2") ALORS
refproduit= XMLDonnée("DocXML2")
FIN
XMLRecherche("DocXML2", "designation_produit", XMLBalise)
SI XMLTrouve("DocXML2") ALORS
Info(Table.designation_produit = XMLDonnée("DocXML2")) FIN

Affichage des données
Info("Numéro de commande : " + idproduit, "refproduit : " + ...
refproduit, "desingation produit : " + designationproduit)

XMLSuivant("DocXML2")

FIN

XMLtermine("DocXML")

Voici mon code pour faire la lecture d'un fichier XML que me renvoie un
procédure d'affichage stocké dans un service WEB dotnet développé en VB.net,
j'ai regarder dans l'aide de windev 7.5 et j'ai repris la procédure d'ecrite
pour réaliser un parcour de fichier et récupéer les valeurs id_produit,
ref_produit, designation_produit.
j'ai regarder dans les postes des newsgroup et je n'ais pas trouver
d'exemple ou de personne ayant eu le même problème
sinon je précise que je suis un débutant dans le développent d'application
sous windev, merci de votre tolérance :)

Mon problème :
il ne parcoure pas le fichier il ne m'affiche que les premières valeurs de
mon fichier (celle avec l'idée 0) quelqu'un peut-il me dire si il y une
erreur dans mon code Windev...
Merci



Ci-dessous mon fichier XML
------------------------------------


<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://tempuri.org/">
<xs:schema id="NewDataSet" xmlns=""
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="ref_produit" type="xs:string"
minOccurs="0" />
<xs:element name="designation_produit" type="xs:string"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<ref_produit>a88784589998</ref_produit>
<designation_produit>Serviette de bain</designation_produit>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<ref_produit>a12</ref_produit>
<designation_produit>gants N?2</designation_produit>
</Table>
<Table diffgr:id="Table3" msdata:rowOrder="2">
<ref_produit>a13</ref_produit>
<designation_produit>gants N?13</designation_produit>
</Table>
<Table diffgr:id="Table4" msdata:rowOrder="3">
<ref_produit>a13</ref_produit>
<designation_produit>gants N?13</designation_produit>
</Table>
<Table diffgr:id="Table5" msdata:rowOrder="4">
<ref_produit>a13</ref_produit>
<designation_produit>gants N?13</designation_produit>
</Table>
<Table diffgr:id="Table6" msdata:rowOrder="5">
<ref_produit>a15 6</ref_produit>
<designation_produit>produit N15</designation_produit>
</Table>
<Table diffgr:id="Table7" msdata:rowOrder="6">
<ref_produit>pouet</ref_produit>
<designation_produit xml:space="preserve" />
</Table>
<Table diffgr:id="Table8" msdata:rowOrder="7">
<ref_produit>pouet</ref_produit>
<designation_produit>poutskjhskjhskjskjsh</designation_produit>
</Table>
<Table diffgr:id="Table9" msdata:rowOrder="8">
<ref_produit>Test</ref_produit>
<designation_produit>tezearezerazerazerazer</designation_produit>
</Table>
<Table diffgr:id="Table10" msdata:rowOrder="9">
<ref_produit>Benoti</ref_produit>
<designation_produit>benoit</designation_produit>
</Table>
<Table diffgr:id="Table11" msdata:rowOrder="10">
<ref_produit>test</ref_produit>
<designation_produit>test</designation_produit>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>

5 réponses

Avatar
Roumegou Eric
Le 13/07/2005, Portishead a supposé :
//Appel de ma procédure d'affichage de mon service WEB
aff_prod()

SourceXML est une chaîne
//Chargement du contenu XML
SourceXML = fChargeTexte(aff_prod())
XMLDocument("DocXML2", aff_prod())




là j'aurais mis SourceXml ???? au lieu de aff_prod qui renvoie quoi ?
une chaine ou un nom de fichier ?

Bon j'ai testé ça (voir code) sur ton fichier (en wd75)
Mais cela ne marche pas ??? surement est-ce du au fait que les balises
sont avec des attributs.
si cela était ainsi, sur que cela marche.
<Table>
<diffgr:id>Table3</diffgr:id>
<msdata:rowOrder>2</msdata:rowOrder>
<ref_produit>a13</ref_produit>
<designation_produit>gants N?13</designation_produit>
</Table>
Mais bon, WD en xml ne semble pas encore au point :-(
Peut être en 9, cela fonctionne-t-il mieux ?



monfic est chaîne
docxml est chaîne="DocXML2"
refprod,despro sont des chaînes
monfic="c:Tempficxml.txt"
SourceXML est une chaîne
//Chargement du contenu XML
SourceXML = fChargeTexte(monfic)
XMLDocument(docxml, SourceXML)


//Création du document XML
SI ErreurDétectée ALORS
Erreur("Le document n'est pas au format XML")
RETOUR
FIN

Résultat est une chaîne
i est un entier = 1
Résultat = XMLExtraitChaîne(SourceXML, "Table", i)
TANTQUE Résultat <> ""

refprod=XMLVersTexte(XMLExtraitChaîne(Résultat,"ref_produit"))
despro=XMLVersTexte(XMLExtraitChaîne(Résultat,"designation_produit"))

Info("Ref produit ="+refprod+RC+"désignation : "+despro)

i = i + 1
Résultat = XMLExtraitChaîne(SourceXML, "Table", i)
FIN

XMLTermine(docxml)

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Portishead
j'ai un petit problème avec ton script....
la fonction XMLversText que tu utilise n'existe pas dans ma version de
Windev ne effet j'utilise la version 7.5




"Roumegou Eric" a écrit dans le message de news:

Le 13/07/2005, Portishead a supposé :
//Appel de ma procédure d'affichage de mon service WEB
aff_prod()

SourceXML est une chaîne
//Chargement du contenu XML
SourceXML = fChargeTexte(aff_prod())
XMLDocument("DocXML2", aff_prod())




là j'aurais mis SourceXml ???? au lieu de aff_prod qui renvoie quoi ? une
chaine ou un nom de fichier ?

Bon j'ai testé ça (voir code) sur ton fichier (en wd75)
Mais cela ne marche pas ??? surement est-ce du au fait que les balises
sont avec des attributs.
si cela était ainsi, sur que cela marche.
<Table>
<diffgr:id>Table3</diffgr:id>
<msdata:rowOrder>2</msdata:rowOrder>
<ref_produit>a13</ref_produit>
<designation_produit>gants N?13</designation_produit>
</Table>
Mais bon, WD en xml ne semble pas encore au point :-(
Peut être en 9, cela fonctionne-t-il mieux ?



monfic est chaîne
docxml est chaîne="DocXML2"
refprod,despro sont des chaînes
monfic="c:Tempficxml.txt"
SourceXML est une chaîne
//Chargement du contenu XML
SourceXML = fChargeTexte(monfic)
XMLDocument(docxml, SourceXML)


//Création du document XML
SI ErreurDétectée ALORS
Erreur("Le document n'est pas au format XML")
RETOUR
FIN

Résultat est une chaîne
i est un entier = 1
Résultat = XMLExtraitChaîne(SourceXML, "Table", i)
TANTQUE Résultat <> ""

refprod=XMLVersTexte(XMLExtraitChaîne(Résultat,"ref_produit"))
despro=XMLVersTexte(XMLExtraitChaîne(Résultat,"designation_produit"))

Info("Ref produit ="+refprod+RC+"désignation : "+despro)

i = i + 1
Résultat = XMLExtraitChaîne(SourceXML, "Table", i)
FIN

XMLTermine(docxml)

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Roumegou Eric
Portishead vient de nous annoncer :
j'ai un petit problème avec ton script....
la fonction XMLversText que tu utilise n'existe pas dans ma version de Windev
ne effet j'utilise la version 7.5




c'est XMLversTexte (avec un e) et voici extrait de la doc WD75
01-75206g
Convertit une chaîne de caractères au format XML en une chaîne de
caractères au format ANSI.
// Convertir une chaîne de caractères au format XML
// en une chaîne de caractères au format ANSI
sChaîneAnsi est une chaine
sChaîneAnsi = XMLVersTexte("<xmlbalise>X est &gt; que Y</xmlbalise>")
// sChaîneAnsi contient "X est > que Y"

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Portishead avait soumis l'idée :

Mon problème :
il ne parcoure pas le fichier il ne m'affiche que les premières valeurs de
mon fichier (celle avec l'idée 0) quelqu'un peut-il me dire si il y une
erreur dans mon code Windev...



Bonjour,

j'ai eu également le problème.
Les fonctions XML WD (en 7.5 mais je ne suis pas certain que cela ait
beaucoup évolué en 8 et en 9) sont baclées et ne gèrent pas les balises
à attribut.

Jette un oeil à cette solution (MSXML2 via OLE mais attention, reste le
problème de la gestion mémoire car les objets OLE ne sont pas libérés
correctement).
Par contre, toutes les fonctions de recherche et d'énumération sont
sans problème...

http://groups.google.com/groups?hl=fr&hs=g9K&lr=&selm=mn.82b67d55e1d116f3.24106%40Signature.fin

Pour MSXML 3 et sup :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/7e831db8-9d0a-43ff-87e9-11382721eb99.asp


A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Portishead
Bon autant pour moi
j'ai la version 01-75201 :<
"Roumegou Eric" a écrit dans le message de news:

Portishead vient de nous annoncer :
j'ai un petit problème avec ton script....
la fonction XMLversText que tu utilise n'existe pas dans ma version de
Windev ne effet j'utilise la version 7.5




c'est XMLversTexte (avec un e) et voici extrait de la doc WD75 01-75206g
Convertit une chaîne de caractères au format XML en une chaîne de
caractères au format ANSI.
// Convertir une chaîne de caractères au format XML
// en une chaîne de caractères au format ANSI
sChaîneAnsi est une chaine
sChaîneAnsi = XMLVersTexte("<xmlbalise>X est &gt; que Y</xmlbalise>")
// sChaîneAnsi contient "X est > que Y"

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)