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

Flex Discussion :

Modifier xml dynamiquement


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut Modifier xml dynamiquement
    ¡Hola!

    Je pense que je connais déjà la réponse mais je tente quand même le coup..sait on jamais...

    Je possede différents fichiers xml...avec différentes syntaxes..
    Je souhaite charger ces fichiers grâce à l'httpservice pour ensuite les intégrer dans un tree...
    Pour des xml basiques, je n'ai aucun probleme, seulement avec les autres, les trees sont...horribles...

    En effet, là où un xml basique comme celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version='1.0' encoding='UTF-8'?>
    <schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <element name="Airfares-form">
    	<element name="Dept" />
    	<element name="Dest" />
    	<element name="DepartDate" />
    	<element name="ReturnDate" />
    	<element name="name" />
    	<element name="customeremail" />
    	<element name="phone" />
    </element>
    </schema>
    me donne un arbre comme celà :


    alors qu'un xml comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version='1.0' encoding='UTF-8'?>
    <xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Airfares-form">
    	<xs:element name="Dept" />
    	<xs:element name="Dest" />
    	<xs:element name="DepartDate" />
    	<xs:element name="ReturnDate" />
    	<xs:element name="name" />
    	<xs:element name="customeremail" />
    	<xs:element name="phone" />
    </xs:element>
    </xs:schema>
    Me donne un arbre comme celui là :


    On peut remarquer que la seule différence entre les deux xml...est l'ajout du "xs:"...qui fait "bugguer" le travail de l'httpservice..

    J'en viens donc à ma demande...
    J'aimerais savoir s'il est possible de modifier directement l'xml (sans ouvrir le fichier xml) à travers flex

    J'ai pensé à un code comme ceci, mais il ne semble pas marcher...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
                 private var cards:ArrayCollection;
     
                 private function init():void
                 {
                 cards = new ArrayCollection(['hotelsvalued.com.xsd', 'data.xml', 'where-to-stay.com.xsd', 'schemas/travel/travel1.xsd', 'schemas/webForm12/betus.com.xml.xsd']);
                   	for (var i:int; i<cards.length; i++)
                 	{
                      for each(var result:XMLNode in cards[i])
                          {    
                               if(result.nodeValue == "<xs:element>")
                                {cards[i].nodeValue = "<element>"}
                           }
     
                 	}  
                 }
    Donc la fonction va prendre les fichiers xml contenu dans le tableau un par un...et va tester s'il y a ces lettres "xs:" et si c'est le cas les supprimer...!!

    Je précise encore que j'aimerai le faire sans avoir a ouvrir le fichier xml...parce que j'en possede une centaine, donc je me vois mal les faire un par un...!!

    Merci d'avance!!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Je n'ai pas le temps de regarder maintenant, mais cela m'étonnerait beaucoup que l'on ne puisse pas utiliser tes xml dans leur format d'origine !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Si c'était le cas, celà me faciliterait grandement la vie...mais la maniere dont je les appellent (httpservice)...ça ne les rend pas bien...

    Je te joins le code si tu veux...

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
        layout="absolute" horizontalAlign="left"
        applicationComplete="resultHandler()" creationComplete="resultHandler2()" initialize="init()">
     
         <!--Gestion de la premiere combobox...-->
        <mx:HTTPService id="srv" url="{CB.selectedItem}" resultFormat="e4x" />
        <mx:ComboBox dataProvider="{cards}" width="150" id="CB" change="resultHandler()"  x="10" y="36"/>
     
    	 <!--Gestion de la deuxieme combobox...-->
    	<mx:ComboBox dataProvider="{cards}" width="150" id="CB2" change="resultHandler2()"  x="306" y="36"/>
          <mx:HTTPService id="srv2" url="{CB2.selectedItem}" resultFormat="e4x" />
     
    <mx:Script>
    	<![CDATA[
     
    		//Raffraichissement des Combobox
                import mx.collections.ArrayCollection;
     
                private function resultHandler():void
                {
    	         srv.send();
    	        }
     
                private function resultHandler2():void
                {
                 srv2.send();
                } 
     
     
              //Tableau des xmls affichés dans les combobox 
                [Bindable]
     
                 private var cards:ArrayCollection;
     
                 private function init():void
                 {
     
                 cards = new ArrayCollection(['hotelsvalued.com.xsd', 'data.xml', 'where-to-stay.com.xsd', 'schemas/travel/travel1.xsd', 'schemas/webForm12/betus.com.xml.xsd']);
     
     
              /*      	for (var i:int; i<cards.length; i++)
                 	{
                      for each(var result:XMLNode in cards[i])
                          {    
                               if(result.nodeValue == "<xs:element>")
                                {cards[i].nodeValue = "<element>"}
                           }
                 
                 	}   */
                 }
     
     
     
    ]]>
    </mx:Script>
     
    	<mx:Grid x="10" y="124" width="473" height="251">
    		<mx:GridRow width="100%" height="100%">
    			<mx:GridItem width="100%" height="100%">
    				<mx:Tree id="treeshéma1" dataProvider="{srv.lastResult}" labelField="@name" 
    				    width="100%" height="100%"/>
    			</mx:GridItem>
    			<mx:GridItem width="100%" height="100%">
    				<mx:Tree id="treeshéma2" dataProvider="{srv2.lastResult}" labelField="@name" 
    				    width="100%" height="100%"/>
    			</mx:GridItem>
    		</mx:GridRow>
    	</mx:Grid>
    </mx:Application>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Petite précision qui à mon avis a son importance..

    Aprés différents tests, il semble que ça ne soit pas le xs: que le tree ne supporte pas...mais plutôt toute la balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    Et donc par la même la définition du xs...
    Mais le problème vient de là il me semble...!!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Solution trouvée ==> Il manquait un name="" dans la balise schema...du coup il prenait tout ce qui suivait comme son identifiant..

    Avant de marquer en résolu, je me permets de rebondir sur une question, puisqu'elle reste dans le domaine du sujet...

    Comment rajouter cette propriété dynamiquement si elle n'est pas présente...?
    C'est à dire que la fonction teste chaque xml...et dans le cas ou elle n'y est pas...elle lui donne pour nom, le nom du fichier xml..


    j'ai bien essayé celà, sachant qu'a la fin...cards doit etre un tableau de fichiers xml..
    Code : 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
    19
    20
                 private var cards:ArrayCollection = new ArrayCollection;
                 private var xml: ArrayCollection;
                 private var test: XML;
     
                 private function init():void
                 {
     
                 xml = new ArrayCollection(['hotelsvalued.com.xsd', 'data.xml', 'where-to-stay.com.xsd', 'schemas/travel/travel1.xsd','schemas/biology/biology1.xsd', 'schemas/webForm12/betus.com.xml.xsd']);
     
     
                   for (var i:int; i<xml.length; i++)
                   {
     
                   	 test = new XML(xml[i]);
                   	 //cards[i].node = ("name ="+ cards[i]);
                   	 test.schema = ("name ="+ xml[i]);
     
                   }
                   cards[i] = new ArrayCollection;
                   cards[i] = xml[i];
    Mais j'obtiens...index '6' is specified out of bounds..
    Pourtant, cards devrait s'implémenter à chaque fois non?

    Merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Pour ceux que celà interesse (sait on jamais)...

    La solution trouvée et approuvée est celle ci ==>

    Ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    labelFunction="labelDisplay"
    au tree

    Cette fonction se chargera de tout!!

    La fonction proprement dite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                          private function labelDisplay(item:Object):String 
                          {           
                           var elt:XML = XML(item);       
                          var name:String = elt.hasOwnProperty("@name") ? elt.@name : elt.localName().toString();         
                           return name;     
                          }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Pb création nodes XML dynamiques
    Par zzman dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 20/04/2006, 08h23
  2. Chargement xml dynamique
    Par zwck dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 15h56
  3. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 11h18
  4. xml dynamique
    Par alamihamza dans le forum XMLRAD
    Réponses: 1
    Dernier message: 11/03/2005, 00h51
  5. xml dynamique
    Par mat10000 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/06/2004, 11h44

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