Flex ActionScript – Ecriture et édition d'objets XML
Vous pouvez écrire et modifier des objets XML en utilisant ActionScript. Il y a trois choses que vous pouvez faire:
- Modifier de la donnée existante
- Ajouter de nouvelles données
- Supprimer de la donnée existante
Vous pouvez modifier de la donnée existante en utilisant la même syntaxe E4X utilisée pour la lecture. Par exemple, le code suivant change le title du premier livre:
xml.book[0].title = "Premier Livre, Premier Tome";
L'exemple suivant change le nom du second author du premier book:
xml.book[0].authors.author[1].@first = "Joseph";
Flex ActionScript – Lecture de données XML en ActionScript 3
Une fois que vous avez crée votre objet XML, vous pouvez lire cet objet. Il y a deux manière de base pour lire la donnée: en traversant tout le Document Object Model (DOM) ou en accédant à la data en utilisant la syntaxe E4X. Les deux techniques ne sont pas exclusives, elles peuvent être utilisées de manière conjointe.
Quand on traite le XML par le DOM, il est traité comme une simple structure hiérarchique de données composée de nœuds parent et enfant. Le DOM se concentre plus sur la structure que sur le contenu. Vous pouvez récupérer tout le contenu d'un XML en le traitant de cette manière, mais vous accédez à la data en allant dans chaque nœud à la fois.
La classe XML définit de nombreuses méthodes pour retrouver la structure d'information du DOM, dont voici quelques exemples en guise de tutorial:
Flex ActionScript – Création d'objets XML en ActionScript 3
Il y deux moyens de créer des objets XML en ActionScript: en utilisant du XML littéral ou avec le constructeur XML. Le XML littéral est utile quand vous voulez définir de la donnée XML directement dans le code et que vous savez exactement quel XML vous voulez utiliser. Il peut aussi être utile à des fins de debug, quand les manipulations client/serveur sont longues (envoi d'un XML en dur pour simuler le retour serveur par ex.).
Flex ActionScript – Gestion des erreurs asynchrones en ActionScript 3
De nombreux objets en ActionScript peuvent potentiellement lancer des erreurs asynchrones. Les erreurs asynchrones sont celles qui se produisent en réponse à une opération réseau. Par exemple, si le fichier demandé n'est pas trouvé, l'opération réseau plante de manière asynchrone, et une erreur asynchrone est lancée. Toutes les erreurs asynchrones se font sous la forme d'évènements, et elles utilisent le même modèle que les évènements standards. Par exemple, si un objet URLLoader tente de charger de la donnée en dehors du bac-à-sable Flash Player (security sandobox), il propage une erreur de type securityError.
L'exemple suivant illustre la manière par laquelle vous pouvez gérer ces évènements erreur:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initializeHandler(event)">
<mx:Script>
<![CDATA[
private function initializeHandler(event:Event):void{
var loader:URLLoader = new URLLoader();
loader.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
// pour tester cet exemple, vous devez donner l'adresse d'un fichier
// en dehors de la sandbox de Flash Player
loader.load(new URLRequest("data.xml"));
}
private function securityErrorHandler(event:SecurityErrorEvent):void{
errors.text += event + "\n";
}
private function IOErrorHandler(event:IOErrorEvent):void{
errors.text += event + "\n";
}
]]>
</mx:Script>
<mx:TextArea id="errors" width="400" height="100"/>
</mx:Application>
Flex ActionScript – Gestion des erreurs synchrones en ActionScript 3
Les erreurs dîtes synchrones se produisent immédiatement après avoir exécuté une instruction. Vous pouvez utiliser try/catch/finally pour manipuler ces erreurs synchrones.
Quand vous avez du code qui peut lancer des erreurs à l'exécution (runtime errors), entourez le d'un bloc try:
try{
// code pouvant lancer des erreurs
}
Vous devez ensuite inclure un ou plusieurs bloc catch suivant le try. Si le code dans le try lance une erreur, l'application va essayer de faire correspondre l'erreur aux blocs catch dans l'ordre dans lequel ils apparaissent. Chaque bloc catch doit spécifier le type d'erreur spécifique qu'il manipule. Tous les types d'erreur sont de type flash.errors.Error ou une sous-classe de Error. C'est pourquoi, vous devez toujours commencer par essayer les erreurs les plus spécifiques en premier, puis les types plus génériques:
try{
// code pouvant lancer des erreurs
} catch (error:IOError){
// code dans le cas d'une erreur spécifique
} catch (error:Error){
// code dans le cas d'une erreur non-spécifique
}





