PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM17] problème lecture fichier XML ...
[WM17] problème lecture fichier XML ...
Débuté par DOYEN Florian, 06 mar. 2012 11:00 - 10 réponses
Posté le 06 mars 2012 - 11:00
Bonjour,

j'ai actuellement un soucis. Je voudrais modifier un libellé (ou le texte d'un bouton, n'importe, c'est pour 'tester' ). pour cela, je lis dans un fichier XML. Quand on arrive à la fin du fichier, on sort de la boucle... Mais rien ne change, comme s'il ne rentrait pas dans la boucle. J'ai pris cet exemple dans la doc ...

MonDoc est une chaîne
MonDoc = fChargeTexte("exemple.xml")
MonRésultat est une chaîne
i est un entier = 1
MonRésultat = XMLExtraitChaîne(MonDoc , "text", i)
TANTQUE MonRésultat<>""
BTN_test = "bouton"
i = i+1
MonRésultat = XMLVersTexte(XMLExtraitChaîne(MonDoc , "text", i))
FIN

il faut que je mette BTN_test = "bouton" en dehors de la boucle pour que ça marche ...

Voici mon fichier exemple.xml

<?xml version="1.0"?>
<text>Ce document respecte la spécification XML 1.0.</text>

Je sais, c'est "basique" mais j'ai beau testé avec de vrais gros fichiers xml ça change rien ...

Je voudrais en fait, afficher le contenu du fichier XML dans un champ "libellé" que j'ai créer. En modifiant donc le texte de ce libellé par le contenu du XML (je souhaite faire un affichage de news dans le libellé... J'ai pas trouvé mieux actuellement !)
Posté le 06 mars 2012 - 15:41
DOYEN Florian a pensé très fort :
Bonjour,

j'ai actuellement un soucis. Je voudrais modifier un libellé (ou le texte
d'un bouton, n'importe, c'est pour 'tester' ). pour cela, je lis dans un
fichier XML. Quand on arrive à la fin du fichier, on sort de la boucle...
Mais rien ne change, comme s'il ne rentrait pas dans la boucle. J'ai pris cet
exemple dans la doc ...

MonDoc est une chaîne
MonDoc = fChargeTexte("exemple.xml")
MonRésultat est une chaîne
i est un entier = 1
MonRésultat = XMLExtraitChaîne(MonDoc , "text", i)
TANTQUE MonRésultat<>""
BTN_test = "bouton"
i = i+1
MonRésultat = XMLVersTexte(XMLExtraitChaîne(MonDoc , "text", i))
FIN

il faut que je mette BTN_test = "bouton" en dehors de la boucle pour que ça
marche ...

Voici mon fichier exemple.xml

<?xml version="1.0"?>
<text>Ce document respecte la spécification XML 1.0.</text>

Je sais, c'est "basique" mais j'ai beau testé avec de vrais gros fichiers xml
ça change rien ...

Je voudrais en fait, afficher le contenu du fichier XML dans un champ
"libellé" que j'ai créer. En modifiant donc le texte de ce libellé par le
contenu du XML (je souhaite faire un affichage de news dans le libellé...
J'ai pas trouvé mieux actuellement !)


http://doc.pcsoft.fr/fr-FR/?3038004&name=multitacherepeint-fonction

--
Cordialement JeAn-PhI
Posté le 06 mars 2012 - 16:25
hm... pardonnez moi mais... Je ne comprends pas très bien en quoi cela va m'aider ... =S
Posté le 06 mars 2012 - 17:46
DOYEN Florian a exprimé avec précision :
hm... pardonnez moi mais... Je ne comprends pas très bien en quoi cela va
m'aider ... =S


cette fonction permet de : Re-dessine immédiatement les champs de la
fenêtre nécessitant une mise à jour graphique, ce qui me semble répond
à votre problématique

--
Cordialement JeAn-PhI
Posté le 07 mars 2012 - 12:17
A vrai dire, ce que je ne comprends pas, c'est pourquoi le code fournis en exemple ne fonctionne pas ...
Posté le 07 mars 2012 - 15:16
DOYEN Florian a couché sur son écran :
A vrai dire, ce que je ne comprends pas, c'est pourquoi le code fournis en
exemple ne fonctionne pas ...


peut être parce vous êtes en v17 et qu'il existe encore qq soucis ou
parce que la gestion du rafraichissement en version mobile est
différente de windows

--
Cordialement JeAn-PhI
Posté le 07 mars 2012 - 15:39
Je viens de cerner le problème, il apparaît que la variable "MonRésultat" reste nulle, alors qu'elle devrait contenir le contenu compris entre les balises text et /text de mon fichier XML...

Mon problème maintenant est : mon fichier XML est-il au bon endroit ?

Ou dois-je le placer ? on dirait qu'il n'ouvre pas le fichier, et que donc la chaîne reste vide ...
Posté le 08 mars 2012 - 10:05
http://doc.pcsoft.fr/fr-FR/?1000003081025&name=xmlrecherche-exemple

la tu as un code complet pour parcourir un xml avec les balises que tu recherches

ce qui donnerai dans ton cas quelque chose comme

DocXML est une chaîne="XML"
InfoXML est une chaîne

InfoXML = fChargeTexte(ComplèteRep(fRepExe())+"exemple.xml")

XMLDocument(DocXML,InfoXML)

XMLRacine(DocXML)

BOUCLE

XMLRecherche(DocXML,"test",XMLElement+XMLContinue)
SI XMLTrouve(DocXML)=Faux ALORS SORTIR

XMLPremier(DocXML)
TANTQUE XMLEnDehors(DocXML)=Faux

Ton_libelle = Ton_libelle + RC + XMLDonnée(DocXML)

FIN

XMLAnnuleRecherche(DocXML)
XMLTermine(DocXML)




je n'ai pas testé j'ai fais ca vite fais avec 1h de sommeil mais peut etre que ca peut te donner une piste
Posté le 08 mars 2012 - 10:31
Ton code me plait beaucoup, (il manquait juste un "FIN" pour "BOUCLE" ;) )

néanmoins je commence à perdre espoir ... Est-ce mon fichier.xml qui déconne ?

il contient ceci :

<?xml version="1.0"?>
<text>Ceci est une news</text>
<text>Ceci est une autre news</text>
<text>Ceci est ENCORE une news</text>

Il faut bien faire comme ci-dessous ?

InfoXML = fChargeTexte(ComplèteRep(fRepExe())+"E:\Mes Projets Mobile\Android_test\exemple.xml")

C'est le chemin relatif, ou l'absolu ? Où est-ce qu'il faut le placer ce fichier xml ?


et une question à part : les exemples utilisent souvent la fonction "Trace" ... Elle ne possède apparemment pas d'équivalent sous Android...
Posté le 09 mars 2012 - 10:28
J'ai réussi à lire le fichier XML.

Le soucis étant qu'il ne rentre pas dans la condition SI :

SI XMLTrouve(DocXML)=Faux ALORS SORTIR

... Du coup il n’exécute pas la suite.

Donc en le plaçant avant j'arrive à lire le contenu du fichier.xml, le problème étant qu'il me lit TOUT le contenu (balises y compris...) je bloque.
Posté le 13 avril 2012 - 09:55
Bonsoir,

J'ai l'impression que la fonction XMLExtraitChaîne() ne fonctionne pas sous Android car moi aussi, elle me retourne une valeur nulle.

Bruno