Utilisation du format XML dans FLASH21/05/2004
Par
Bolo Michelin (Autres articles)
Cet article vous expliquera comment utiliser un document XML dans Flash.
1. XML:base 1
1.1. commandes
1.2. application
1.3. Aller plus loin
2. XML et Base de données (ASP)
3. XPath
3.1. Commandes
3.2. Application
Remerciements
1. XML:base 1
Ce premier article vous apprendra les bases de la manipulation d'un document XML.
Je vous invite à visiter la section XML.Pour toutes questions sur ce tutorial
1.1. commandes
Pour charger des données XML, il faut créer un objet XML.
Dans le dictionnaire A.S (Action Script) vous pourrez voir toutes les propriétés de l'objet XML.
Dans cet article nous utiliserons ces commandes pour charger le document XML :
XML.getBytesLoaded, XML.getBytesTotal, XML.load.
XML.getBytesLoaded
XML.getBytesLoaded renvoie le nombre d'octets chargés pour le document XML
Minimum
flash player 6
Syntaxe
monCodeXML.getBytesLoaded()
Exemple
document.getBytesLoaded()
XML.getBytesTotal
XML.getBytesTotal renvoie la taille, en octets, du document XML spécifié.
Minimum
flash player 6
Syntaxe
monCodeXML.getBytesTotal()
Exemple
document.getBytesTotal()
XML.load
XML.load charge un document XML depuis l'URL.
Minimum
flash player 5
Syntaxe
monCodeXML.load(url)
Exemple
document = new XML()
document.load("monXML.xml")
Pour récupérer les données nous utiliserons XML.attributes.
XML.attribut
XML.attributes renvoie un tableau associatif contenant tous les attributs de l'objet XML spécifié.
Minimum
flash player 5
Syntaxe
monCodeXML.attributes
Exemple
document = new XML()
document.load("monXML.xml")
trace(document.firstChild.childNodes[1].attributes.nom)
1.2. application
On crée un document XML.
<?xml version="1.0" ?>
<root>
<nouvelle numero="3" date="17/12/2003" />
</root>
On charge le document XML.
document= new XML();
document.ignoreWhite=true;
document.load("essai.xml");
Pour récupérer le numéro et la date de la nouvelle, on fait ainsi :
document.firstChild.childNodes[0].attributes.numero
document.firstChild.childNodes[0].attributes.date
Manipulation d'un document XML :
Combien y a-t-il de nouvelles ?
document.firstChild.childNodes.length
Quel est la date de la nouvelle numéro 1 ?
document.firstChild.childNodes[0].attributes.date
1.3. Aller plus loin
Le code ci-dessous explique comment précharger des données XML. Nous préchargeons les données du document XML.
_root.document=new XML();
_root.document.ignoreWhite=true;
_root.document.load("monXMl.xml");
_root.stop();
_root.document.onLoad=function(){
trace(this.firstChild.childNodes[0].attributes.texte);
_root.play();
}
2. XML et Base de données (ASP)
La création d'un document XML à la volée est assez simple. Dans la page ASP nous réalisons une requête qui sélectionne toutes les news. Après nous les éditons en les formatant comme un fichier XML. Dans l'exemple ci-dessous, nous créons un document XML de cette forme.
<?xml version="1.0" ?>
<root>
<nouvelle date="10/02/2003" texte=" teste 1"/>
</root>
Voici le code de la page ASP:
<@ CodePage=65001 Language="VBScript">
<%
Set oC = Server.CreateObject("ADODB.Connection")
oC.Provider = "Microsoft.Jet.OLEDB.4.0"
oC.Open "Data Source=" & Server.MapPath("../../databases/ind.mdb")
SQL ="SELECT * FROM news order by date DESC"
Set oRS = CreateObject("ADODB.Recordset")
oRS.Open SQL,oC,3,3
response.write("<?xml version="""1.0""" ?>")"
response.write(<root> )
ors.movefirst
do while not ors.eof
response.Write("<nouvelle date=""" & ors("date") & """ texte=""" & ors("texte") & """ />" )
ors.movenext
Loop
response.write("</root> ")
Set oRS = Nothing
oC.Close
Set oC = Nothing
%>
3. XPath
Flash MX 2004 introduit une nouvelle classe XPathAPI. Celle-ci vous permettra de faire des recherches simples avec Xpath dans Flash.
3.1. Commandes
La classe de XPathAPI n'est pas une classe construite dans le Flash Player 7. Celle-ci se trouve dans une librairie spéciale appelée DataBindingClasses. Avant de voir un cas concret, voyons toutes les expressions supportées par Flash.
<employees>
<person gender="m">Matt</person>
<person gender="f">Heather</person>
<person gender="m">Tucker</person>
<person gender="f">Apple</person>
<person gender="m">Nate</person>
</employees>
Pour accéder au noeud personne, on peut soit utiliser un chemin absolu
/employees/person
soit un chemin relatif person si le noeud courant est <employees>. On peut également utiliser les wildcard (*). Par exemple avec notre fichier: le chemin "/*/person" recherche tous les élements <person> indépendamment du noeud parent. L'opérateur = est supporté également. Ce chemin nous ressort tous les employés qui sont des femmes "/employees/person[@gender='f']". Ce chemin "/employees/person[@gender='f' and @age='30 ']" ressort tous les employés qui sont des femmes et qui ont 30 ans. Les opérateurs suivants ne sont pas supportés par Flash: "<", ">", "//".
3.2. Application
<employees>
<person gender="m">Matt</person>
<person gender="f">Heather</person>
<person gender="m">Tucker</person>
<person gender="f">Apple</person>
<person gender="m">Nate</person>
</employees>
Dans notre nouveau document, nous allons importer la librairie DataBindingClasses
- ouvrir : Fenêtre/Autres panneaux/Bibliothèques communes/Classes
- Sélectionnez la bibliothèque DataBindingClasses et glissez-la dans la bibiothèque de votre animation.
- Sur la première Frame de votre animation taper : import mx.xpath.XPathAPI;. Celle ligne permet d'importer la classe XpathApi dans Flash
Maintenant que notre classe est importée dans notre animation, nous allons créer notre interface.
- Placer deux boutons : un pour les hommes(bnt_H) et un pour les femmes (bnt_F)
- Placer un textarea (txt_pesonne) et dans l'option HTML mettez "true"
La fonction Remplir ajoute les valeurs du tableau dans le textarea
function Remplir (texte){
txt_pesonne.text =""
for (var i = 0; i < texte.length; i++) {
txt_pesonne.text+=texte[i];
}
}
Puis nous chargeons notre fichier XML et nous ajoutons tous les noms
myXML = new XML()
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
if(success){
var chemin = "/employees/person"
var personNoeud = mx.xpath.XPathAPI.selectNodeList(this.firstChild,chemin);
Remplir (personNoeud )
}
}
myXML.load("xpath.xml")
Le bouton bnt_F affichera le nom des femmes.
bnt_F.onPress = function () {
var chemin = "/employees/person[@gender='f']";
var personNoeud = mx.xpath.XPathAPI.selectNodeList(myXML.firstChild,chemin);
Remplir (personNoeud )
}
Le bouton bnt_H affiche lui le nom tous les hommes
bnt_H.onPress = function () {
var chemin = "/employees/person[@gender='m']";
var personNoeud = mx.xpath.XPathAPI.selectNodeList(myXML.firstChild,chemin);
Remplir (personNoeud )
}
Télécharger le zip contenant le fichier XML et le fla.
Remerciements
Chaleureux remerciements à Developpez.com et plus particulièrement à
Jérôme etAlacazam .
Cet article est la propriété de www.developpez.com en tant qu'hébergeur ainsi que
celle de Bolo en tant que rédactrice, ce texte est donc protégé par le code de la
propriété intellectuelle et est soumis à la réglementation en vigueur.
www.developpez.com ou son auteur se réserve le droit d'apporter des modifications
sans préavis. Vous pouvez utiliser cet article comme bon vous semble, faire un lien depuis
votre site Web, ou le copier en spécifiant l'auteur et la provenance (www.developpez.com)
Le non respect de cette règle équivaudrait à faire une contrefaçon. La responsabilité de
www.developpez.com, de l'un de ses membres, ou de la direction ne pourra être engagée en cas
de destruction partielle ou totale des données ou de l'architecture système ou logicielle
inhérente à l'utilisation de ses logiciels. Les logiciels décrits ici sont la propriété de
leurs auteurs respectifs.
|