Accès fichier XML

Sebiotin - 30 mai 2013 à 01:55
 Sebiotin - 30 mai 2013 à 02:25
Bonjour,

Je débute sur AS3,

Je dois faire une animation assez simple et je bute sur un point: cette animation sera traduite en 24 langues...
Jusque la tout va bien, Ensuite le fichiers XML que je dois utiliser sera modifier par un autre logiciel, en d'autres termes je n'ai pas le choix de la structure.

J'ai donc fais des essais avec un code simple pour le récupérer...j'y arrive sans problème mais quand je veux lire les données j'ai une erreur:
debut de telechargement
Déjà disponible :100%
nombre d'enregistrement:3
TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
at Test5_fla::MainTimeline/DesQueDisponible()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()


Voici mon code AS3:
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

////////////////////Initialisation/////////////////////
var URLServer:String=""
var URLDossier:String="Text/en/"
var URLFichier:String="Test5_en.xml"

////////////////////Gestion du XML////////////////////
//Création du chemin vers le serveur

var AtteindreURL:URLRequest=new URLRequest (URLServer+URLDossier+URLFichier)

//Création d'un chargeur XML
var ChargeurXML:URLLoader=new URLLoader()

//Lanceur de chargement

ChargeurXML.load (AtteindreURL)

////////////////Ecouteurs////////////////////
ChargeurXML.addEventListener(Event.OPEN, debutchargement)
ChargeurXML.addEventListener(ProgressEvent.PROGRESS, enCours)
ChargeurXML.addEventListener(Event.COMPLETE, DesQueDisponible)
ChargeurXML.addEventListener(IOErrorEvent.IO_ERROR, siErreur)

/////////////////////////////////Fonctions//////////////////////
//Gestion des telechargements
function debutchargement(cible:Event) :void {
trace ("debut de telechargement")
}
//Gestion de,la progression
function enCours(cible:ProgressEvent) :void{
var pourcentage:Number=Math.floor ((cible.bytesLoaded*100)/cible.bytesTotal)
trace("Déjà disponible :" +pourcentage+"%")
}
//Gestion fin de telechargement
function DesQueDisponible(cible:Event) :void{
var donneeXML:XML=new XML(cible.target.data)
trace ("nombre d'enregistrement:" +donneeXML.*.length())
//lecture complete


//trace (donneeXML.*)
trace (donneeXML.instance[0].text)
}
//gestion des erreurs
function siErreur(cible:IOErrorEvent) :void{
trace("fichier indisponible")

}


Voici mon fichier XML:
<?xml version="1.0" encoding="UTF-8"?>
<moduleTextFile>
  <chunk textType="Student_5" alias="Flash dynamic text" instance="1" vAlign="top">
    <textFormat>Fuel and AdBlue gauge. Orange light indicates on fuel reserve</textFormat>
  </chunk>
  <chunk textType="Student_5" alias="Flash dynamic text" instance="2" vAlign="top">
    <textFormat>Air pressure</textFormat>
  </chunk>
  
  <chunk textType="Student_5" alias="Flash dynamic text" instance="3" vAlign="top">
    <textFormat>ASR and ESP
tell-tale </textFormat>
  </chunk>

</moduleTextFile>


Je suppose que c'est une pure erreur de débutant mais c'est ce que je suis... j'éspère que vous pourrez m'aider/me Former...

Merci beaucoup de votre aide,

Bonne soirée

Sebastien

1 réponse

Bonsoir,

Afin d'éviter de nombreuse discussion, j'ai trouvé ma solution...

Voilà ce que j'ai corrigé dans mon AS3, toute critique est la bienvenue:

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

////////////////////Initialisation/////////////////////
var URLServer:String=""
var URLDossier:String="Text/en/"
var URLFichier:String="Test5_en.xml"

////////////////////Gestion du XML////////////////////
//Création du chemin vers le serveur

var AtteindreURL:URLRequest=new URLRequest (URLServer+URLDossier+URLFichier)

//Création d'un chargeur XML
var ChargeurXML:URLLoader=new URLLoader()

//Lanceur de chargement

ChargeurXML.load (AtteindreURL)

////////////////Ecouteurs////////////////////
ChargeurXML.addEventListener(Event.OPEN, debutchargement)
ChargeurXML.addEventListener(ProgressEvent.PROGRESS, enCours)
ChargeurXML.addEventListener(Event.COMPLETE, DesQueDisponible)
ChargeurXML.addEventListener(IOErrorEvent.IO_ERROR, siErreur)

/////////////////////////////////Fonctions//////////////////////
//Gestion des telechargements
function debutchargement(cible:Event) :void {
trace ("debut de telechargement")
}
//Gestion de,la progression
function enCours(cible:ProgressEvent) :void{
var pourcentage:Number=Math.floor ((cible.bytesLoaded*100)/cible.bytesTotal)
trace("Déjà disponible :" +pourcentage+"%")
}
//Gestion fin de telechargement
function DesQueDisponible(cible:Event) :void{
var donneeXML:XML=new XML(cible.target.data)
trace ("nombre d'enregistrement:" +donneeXML.*.length())
//lecture complete


trace (donneeXML.chunk[1].textFormat)
//trace (donneeXML.instance[1].textFormat)
}
//gestion des erreurs
function siErreur(cible:IOErrorEvent) :void{
trace("fichier indisponible")

}


En appelant chunk, je sors bien les textes qui m'interresse...donc ça devrait marcher...

Merci
0
Rejoignez-nous