KoDeserializer

Vous trouverez ici : kodeserializer.zip un petit Deserializer perso à utiliser avec PixLib et qui ajoute deux petites fonctionnalités au XMLToObjectDeserializer fournit par Francis :

Une propriété statique USE_ATTRIBUTE_NAME qui est un Boolean (false par défaut). Il désactive l'utilisation de l'attribut name d'un noeud en tant que nom de propriété de l'objet déserialisé (du coup c'est le nom du noeud qui est utilisé

Une méthode d'instance

 
 forceType( sNodeName : String, sType : String);
 

Elle permet d'indiquer un type pour des noms. Le but étant de pouvoir gérer des types sur des XML sur lesquels on a pas la main.

Une classe et un xml de test sont dans le zip mais en gros voici le principe :

Mon XML

<?xml version="1.0" encoding="UTF-8"?> <root> 	<test1NodeName name="test1AttributeName">Cool</test1NodeName> 	<test2>'item1','item2','item3'</test2> </root>

Si je le charge avec le Deserialize de base voici en gros ce que j'aurais :

 [
Object] test1AttributeName : "cool" // Type String
test2 : "'item1','item2','item3'" // Type String
 

Avec mon déserializer, en forcant le type du noeud test2 sur array :

 
[Object] test1NodeName : "cool" // Type String
test2 : [Array] // Type Array
[0] : "item1"
[1] : "item2"
[2] : "item3"
 

Et voici le bout de code dans la classe Test.as, au passage vous noterez que j'ai mis les types en propriétés statiques pour plus de sécurité...

 
// Méthode classique
var xto : XMLToObject = new XMLToObject( {} );
xto.addEventListener( XMLToObject.onLoadInitEVENT, this, debugObject );
xto.load( "test.xml" );
// Flapflap Style <img src='http://kilooctet.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
KoXTODeserializer.USE_ATTRIBUTE_NAME = false;
// On utilise plus l'attribut name
var deserializer : KoXTODeserializer = new KoXTODeserializer();
deserializer.forceType("test2", KoXTODeserializer.ARRAY_TYPE);
// ON force le type Array pour le noeud test2
var koXto : XMLToObject = new XMLToObject( {}, deserializer );
koXto.addEventListener( XMLToObject.onLoadInitEVENT, this, debugObject );
koXto.load( "test.xml" );
 

Deux limitations : On force un type pour un nom de noeud donc si on a plusieurs noeud a différents niveaux ayant le même nom ils auront le même type Forcer le type array sur un noeud ayant des enfants n'est pas gérer

J'attends vos retour :)


Commentaires

  1. Citation
    ekameleon (subscribed) a dit 19 avril 2007, 0:54:

    Franchement.. vu la lenteur du parseur XML .. je continue à penser que le XML en AS2 pour des fichiers de config c’est pas top un brin :) Vive EDEN ou JSON .. beaucoup mieux adapter à ce genre d’opération.

    eKA+ :)

  2. Citation
    ali_o_kan (subscribed) a dit 20 avril 2007, 10:45:

    Bien sympa tout ça. :)

    Merci pour le partage.

Laissez un commentaire

(required)

(required)

Formatter votre commentaire

Les tags XHTML suivants sont utilisables:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Les URLs sont automatiquement converties.