thePureXtc
Messages postés4Date d'inscriptionlundi 5 février 2007StatutMembreDernière intervention 2 mai 2009
-
29 avril 2009 à 00:36
thePureXtc
Messages postés4Date d'inscriptionlundi 5 février 2007StatutMembreDernière intervention 2 mai 2009
-
2 mai 2009 à 18:26
Bonjour à tous,D'habitude je crée moi-même le XML et m'y connecte donc sans trop de problèmes. Ici je dois collaborer avec une boîte qui ne n'arrive pas à enlever le titre du document qui me gêne quand je veux accéder aux donnée. Je n'arrive pas à passer par dessus cette foutue ligne..... C'est tout con, j'espère que quelqu'un pourra m'aider. Please.
Voici un extrait de mon XML :
<?xml version= "1.0" encoding="UTF-8"?>
<Data>
<row>
cover_flow_images/album1.gif
<NO-CLIENT>100004</NO-CLIENT>
<FONCTION>Infirmier CAM</FONCTION>
<ENTREE>de suite ou mars 2009</ENTREE>
Recherche 2 infirmiers;
<LIEUTRAVAIL>Lausanne</LIEUTRAVAIL>
CAM, Chirurgie ambulatoire
<SPRACHE-KUNDE>Français</SPRACHE-KUNDE>
<VAKANZART>Fixe</VAKANZART>
</row>
</Data>
Voici un extrait du XML qu'on me donne, voyez les lignes avant "<Data>" :
<?xml version ="1.0" encoding="UTF-8"?>
<CxtXMLEnvelope>
<Header>
<DocumentStandard>XML</DocumentStandard>
<DocumentType>VAKANZEN</DocumentType>
</Header>
<Data>
<row>
album1.gif
<NO-CLIENT>100004-6</NO-CLIENT>
<FONCTION>Infirmier CAM</FONCTION>
<ENTREE>de suite ou mars 2009</ENTREE>
Recherche 2 infirmiers .
<LIEUTRAVAIL>Lausanne</LIEUTRAVAIL>
CAM, Chirurgie ambulatoire ( env. 1 par mois)
<SPRACHE-KUNDE>Français</SPRACHE-KUNDE>
<VAKANZART>Fixe</VAKANZART>
</row>
<Data>
Jusqu'à présent je parcourais le XML de la sorte, comment modifier ces lignes ???
xmlData.onLoad = function(success:Boolean):Void {
if (success) {
for (var i:Number = -1; this.childNodes[0].childNodes[++i]; ) {
var cNode:XMLNode = this.childNodes[0].childNodes[i].childNodes;
var val2:String = cNode[1].childNodes[0].nodeValue ? unescape(cNode[1].childNodes[0].nodeValue) : update;
var val3:String = cNode[2].childNodes[0].nodeValue ? unescape(cNode[2].childNodes[0].nodeValue) : update;
var val4:String = cNode[3].childNodes[0].nodeValue ? unescape(cNode[3].childNodes[0].nodeValue) : update;
var val5:String = cNode[4].childNodes[0].nodeValue ? unescape(cNode[4].childNodes[0].nodeValue) : update;
var val6:String = cNode[5].childNodes[0].nodeValue ? unescape(cNode[5].childNodes[0].nodeValue) : update;
var val7:String = cNode[6].childNodes[0].nodeValue ? unescape(cNode[6].childNodes[0].nodeValue) : update;
var val8:String = cNode[7].childNodes[0].nodeValue ? unescape(cNode[7].childNodes[0].nodeValue) : update;
var val9:String = cNode[8].childNodes[0].nodeValue ? unescape(cNode[8].childNodes[0].nodeValue) : update;
Blacknight91titi
Messages postés1732Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 9 mars 20152 29 avril 2009 à 09:20
Hello,
Mmmhh je serai toi je passerai tout de suite sur ActionScript 3. La gestion du XML passe en type primitif et parcourir un XML devient un vrai jeu d'enfant !
Pour charger un XML en AS3, il faut utiliser la classe URLLoader.
Exemple (de tête) :
var myXML:XML;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, completeLoad);
xmlLoader.load(new URLRequest("monxml.xml"));
function completeLoad(evt:Event):void {
myXML = evt.target.data; //A vérifié la présence de l'attribut 'data' dans le dictionnaire ActionScript.
}
Ensuite pour parcourir un xml, rien de plus facile :
var num:String : myXML.row.element('NO-CLIENT');
//Ici on utilise la méthode element() du fait du caractère spécial employé dans le nom de l'enfant. Autrement il suffirait de faire myXML.row.noclient; D'où l'intérêt de ne pas utiliser de caractère spéciaux :)
Pour lire un attribut :
myXML.row.noeud.@monAttribut;
Mieux encore, pour récupérer un noeud particulier
myXML.row.noeud.(@monAttribut == 1).noclient;
Evidement dans la parenthèse on peut utiliser n'importe quelle condition.
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 29 avril 2009 à 09:24
Bonjour,
je suppose que le xml est cloturé par une balise </CxtXMLEnvelope>
Si c'est le cas, alors ce qui t'intéresses ces le second noeud du XML (<HEADER></HEADER> représentant le premier)
je modifierais en conséquence ta fonction
xmlData.onLoad = function(success:Boolean):Void {
if (success) {
var baseNode:XMLNode=this.firstChild.childNode[1]
var totalNodes:Number=baseNode.childNodes.length
for (var i:Number = 0; i<totalNodes;i++ ) {
var cNode:XMLNode = baseNode.childNodes[i].childNodes;
var val2:String = cNode[1].childNodes[0].nodeValue ? unescape(cNode[1].childNodes[0].nodeValue) : update;
var val3:String = cNode[2].childNodes[0].nodeValue ? unescape(cNode[2].childNodes[0].nodeValue) : update;
var val4:String = cNode[3].childNodes[0].nodeValue ? unescape(cNode[3].childNodes[0].nodeValue) : update;
var val5:String = cNode[4].childNodes[0].nodeValue ? unescape(cNode[4].childNodes[0].nodeValue) : update;
var val6:String = cNode[5].childNodes[0].nodeValue ? unescape(cNode[5].childNodes[0].nodeValue) : update;
var val7:String = cNode[6].childNodes[0].nodeValue ? unescape(cNode[6].childNodes[0].nodeValue) : update;
var val8:String = cNode[7].childNodes[0].nodeValue ? unescape(cNode[7].childNodes[0].nodeValue) : update;
var val9:String = cNode[8].childNodes[0].nodeValue ? unescape(cNode[8].childNodes[0].nodeValue) : update;
thePureXtc
Messages postés4Date d'inscriptionlundi 5 février 2007StatutMembreDernière intervention 2 mai 2009 29 avril 2009 à 22:05
Wouah,
Merci beaucoup ! Non seulement j'ai eus une réponse direct de Girou mais blackNight m'à aussi aiguillé vers une meilleure architecture pour mes futur projets.
C'est clair, il faut que je me mette à l'AS3 et tu n'es pas le premier à me le dire.
Grâce à tes précieux conseils et à ton lien, je vais me mettre un coup de pied au derrière et m'y intéresser de plus près!
Je reviens vers vous vers la fin de semaine, on inaugure demain notre bureau ! Et il y a du boulot.... Et plus particulièrement vers toi Girou, si tu auras encore l'obligeance de m'accorder quelques lignes sur ce projet en AS2, j'ai rapidement essayé avec la modif conseillée mais ça ne passe toujours pas, je passe encore quelques heures dessus et reviens vers toi avec plus de précisions si tu es d'accord. Là je dois aider mes collègues à organiser les derniers détails.
Je ne pensais pas recevoir si rapidement de si riches réponses, merci à vous deux pour le temps consacré.
Bien à vous,
Grégory
Vous n’avez pas trouvé la réponse que vous recherchez ?
Blacknight91titi
Messages postés1732Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 9 mars 20152 30 avril 2009 à 09:29
Pas de soucis thePureXtc.
Je reste persuadé cependant qu'une section ActionScript 3 dans les catégories serait fort utile pour ceux souhaitant passer à AS3.
D'expérience personnel, depuis que je suis passé sur ActionScript 3, je travaille beaucoup plus efficacement et de façon plus structurer. Cela se répercute d'ailleurs également sur les autres langages sur lesquels je travaille ;)
Passer à ActionScript 3 est donc réellement une bonne chose.
thePureXtc
Messages postés4Date d'inscriptionlundi 5 février 2007StatutMembreDernière intervention 2 mai 2009 2 mai 2009 à 13:46
Comment dire ? Mille mercis !
Ca marche du tonner ! Girou tu cartonnes !!!!
Je me remets gentillement de notre soirée d'inauguration de ce jeudi ! C'était une vraie réussite. Quelle surprise d'avoir mon code propre en ordre juste après !
D'ailleurs si vous passez à Lausanne un jour, venez me dire bonjour à 2, rue des Terreaux (au coeur de la ville) et je vous offre une bonne petite bière ! Avec plaisir !
D'ailleurs si vous avez besoin d'un conseil graphique ou d'une remarque constructive pour vos applications, n'hésitez pas (là je suis plus fort : http://gregory-aegerter.ch) !
J'aimerai vous rendre la pareil. Merci encore d'avoir pris le temps.
BlackNight, c'est promis : mon prochain travail de formation personnelle se portera sur mon passage de l'AS2 à l'AS3. J'ai gardé tout tes précieux liens.