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

WinDev Discussion :

Gestion des attributs XML


Sujet :

WinDev

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Gestion des attributs XML
    Bonjour,

    Je travaille avec une arbre XML qui se présente ainsi :
    Code xml : 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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <script>
    	<Enchainement>
    		<Image id='5'>
    			<Nom>HTM_Presentation.html</Nom>
    			<Type>Slide</Type>
    			<Titre>Présentation de l'environnement</Titre>
    			<Chapitre>Bases d'une page HTML</Chapitre>
    			<Suite>10</Suite>
    		</Image>
    		<Image id='10'>
    			<Nom>HTM_Definition.html</Nom>
    			<Type>Slide</Type>
    			<Titre>Présentation du langage HTML</Titre>
    			<Chapitre>Bases d'une page HTML</Chapitre>
    			<Suite>15</Suite>
    		</Image>
                    etc...

    Je remplis une combobox avec un code qui ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	ListeSupprimeTout(cb_Chapitre)
    	SI XMLExécuteXPath(LC_FluxXML, "//script/Enchainement/Image") ALORS
    		TANTQUE PAS XMLEnDehors(LC_FluxXML)	
    			LO_Noeud est un xmlNoeud=XMLPosition(LC_FluxXML)
    			LC_Lien est une chaîne = LO_Noeud + "@id"
    			ListeAjoute(cb_Chapitre, APPLI_ValeurNoeudXML(LO_Noeud + "/Chapitre") + gLien(LC_Lien))
    			XMLSuivant(LC_FluxXML)
    		FIN
    	FIN
    Mon problème est que la valeur de LC_Lien ne récupère par l'attribut ID
    Si je regarde sous debogueur la variable LO_Noeud je n'y vois pas d'attribut.

    J'avoue ne pas comprendre.
    Merci d'avance de vos idées.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Vous n'avez aucune chance d'y arriver comme cela, parce que vous mélangez deux manières de gérer le XML sous Windev.

    Allez lire ici et encore ici, qui est une redite.
    vous y verrez plus clair.

    Et évidemment, travaillez avec la filière XmlDocument.

    Bonne lecture et bon travail
    Ah oui aussi : Meilleurs vœux !! (indispensable )

    Hemgé

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci du retour.

    Oui je sais qu'il y a deux approches possibles (on se demande bien pourquoi d'ailleurs)
    Pour vous c'est quoi la filière XmlDocument ? Le type de variable XmlDocument ou la fonction XmlDocument ?

    Il y a peut être quelque chose que j'ai mal compris mais je n'ai jamais pu utiliser XPath avec une variable de type XMLDocument.
    Donc dans mon cas quand je suis sur le nœud comment puis-je récupérer son attribut ?

    Les vœux c'est demain soir. N'anticipons pas! Mais si vous ne reprenez ce poste qu'en 2017 je vous souhaite de bonnes fêtes.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    comme le dit Hemgé :
    Et évidemment, travaillez avec la filière XmlDocument.
    Si tu suis ce qui est indiqué dans la doc PCSOFT ici et plus particulièrement le paragraphe :
    Utilisation d'une variable de type xmlDocument
    en important en description un exemplaire représentatif de ton fichier xml (par exemple le fichier en attachement) tu vas te retrouver avec ceci dans l'explorateur de projet :
    Nom : windev-xml-desc-FicXML.png
Affichages : 868
Taille : 7,6 Ko
    et alors tu vas pouvoir utiliser cette description pour accéder aux différentes parties de ton fichier xml.
    Voici un exemple qui affiche les attributs et les valeurs de tes objets images de ton fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MonDocXML est un WL.XMLDocument, description =FicXML
    // Chargement d'un document XML depuis un fichier
    MonDocXML = XMLOuvre("c:\Logs\FicXML.xml",depuisFichier)
    img est un xmlNoeud,description="FicXML.script.enchainement.Image"
    POUR TOUTE img DE MonDocXML.script.Enchainement
    	Trace(" ID :  ", img:id ," - Nom : ", img.Nom," - Suite  : ", img.Suite)
    	Trace("Titre :  ", img.Titre," - Type : ", img.Type)
    	Trace("==================================")
    FIN
    on ne peut pas plus simple !
    voici le résultat :
    Nom : Traces-Windev-XML.png
Affichages : 840
Taille : 5,5 Ko

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Bonsoir,

    Si je veux utiliser de l'XPath dans mon application je ne vois pas trop comment utiliser une variable XMLDocument.

    Dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LO_ExtraitXML   est un xmlDocument	
    LO_ExtraitXML = XMLOuvre(LO_Appl.CheminAnnuaire, depuisFichier)
    SI XMLExécuteXPath(LO_ExtraitXML, LC_Noeud) = Faux alors
    	LO_Noeud..Nom = LC_Noeud
    	Ajoute(LO_ExtraitXML, LO_Noeud)
    FIN
    J'ai une erreur sur le XMLOuvre parce que le premier paramètre est erroné.

    Effectivement le lien suivant
    http://doc.pcsoft.fr/?3081015&lang=f...ion=01F200057k

    indique que c'est seulement à partir de la version 21 que cette syntaxe aurait une chance de fonctionner.
    Moi je suis en 20.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Dans ce cas, je pense qu'il serait préférable de faire appel aux dll .NET, vous allez trouver un exemple de XML, du code et le résultat obtenu en venant ici

Discussions similaires

  1. Gestion des fichiers XML avec la XML toolbox
    Par duf42 dans le forum Contribuez
    Réponses: 2
    Dernier message: 24/02/2012, 09h00
  2. [SimpleXML] Parser XML gestion des attributs
    Par Petitpont dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/10/2009, 23h24
  3. Gestion des fichiers XML et ASC3 sous Flex:
    Par silverfab34 dans le forum Flex
    Réponses: 2
    Dernier message: 18/07/2007, 17h34
  4. [xslt][xpath]Utilisation des attributs XML
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/05/2007, 12h42
  5. Gestion des attributs hidden et visible
    Par Jibees dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2006, 13h58

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