Page 1 sur 1

Exemple utilisation XML

Publié : dim. 03/juin/2007 12:11
par wolfjeremy
Salut,

Voici un petit exemple de base, pour l'utilisation de la lib xml.

Pour celà on utilise le fichier xml de clubic (un peut raccourci quand même) : (à enregistrer sous demo.xml)

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0">
<channel>
	<title>Clubic.com - Demos de Jeux</title>
	<link>http://www.clubic.com/</link>
	<description>Informatique et Multimédia</description>
	<language>fr</language>
	<copyright>Copyright 1997-2007, Cyrealis - Clubic.com</copyright>
	<lastBuildDate>Sat,  2 Jun 2007 18:51:54 +0200</lastBuildDate>
	<generator>Clubic</generator>
	<docs>http://www.clubic.com/divers/partner.php</docs>
	<ttl>20</ttl>
	<image>
		<title>Clubic.com</title>
		<url>http://www.clubic.com/style/images/logo-clubic.gif</url>
		<link>http://www.clubic.com/</link>
		<width>144</width>
		<height>60</height>
	</image>

 	<item>
 		<title>The Guild 2 : Pirates Of The European Seas - Démo jouable #1</title>
		<description>Suite au problème rencontré sur la première version de la démo jouable, les développeurs en ont proposé une autre. Le contenu est évidemment le même et il s'agit toujours de donner un aperçu du jeu.</description>
		<link>http://www.clubic.com/demo-jeux-video-7931-0-the-guild-2-pirates-of-the-european-seas.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7931-0-the-guild-2-pirates-of-the-european-seas.html</guid>
		<pubDate>Wed, 30 May 2007 17:17:54 +0200</pubDate>
		<category>Gestion > Economique</category>
	</item>
 	<item>
 		<title>Space Force : Rogue Universe - Démo jouable #1</title>
		<description>Plusieurs systèmes, différentes stations et quelques zones de saut sont disponibles dans cette démo jouable qui permet également de découvrir quelques quêtes et un certain nombre d'améliorations de votre vaisseau.</description>
		<link>http://www.clubic.com/demo-jeux-video-7298-0-space-force-rogue-universe.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7298-0-space-force-rogue-universe.html</guid>
		<pubDate>Tue, 29 May 2007 20:23:28 +0200</pubDate>
		<category>Sport & Simulation > Futuriste</category>
	</item>
 	<item>
 		<title>Tomb Raider Anniversary - Démo jouable #1</title>
		<description>Modeste (260 Mo), cette démo jouable nous permet d'incarner l'intrépide Lara Croft alors qu'elle se lance à la recherche d'un artefact en plein Pérou.</description>
		<link>http://www.clubic.com/demo-jeux-video-6871-0-tomb-raider-anniversary.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-6871-0-tomb-raider-anniversary.html</guid>
		<pubDate>Sat, 26 May 2007 00:33:54 +0200</pubDate>
		<category>Aventure > Action</category>
	</item>
 	<item>
 		<title>Dungeon Runners - Jeu complet</title>
		<description>Complètement gratuit, ce jeu de rôle massivement multijoueur nécessite tout de même la création d'un compte PlayNC pour aller avec l'installation de ce fichier. Toutes les démarches sont résumées (en anglais) sur <a href="https://secure.plaync.com/cgi-bin/plaync_account.pl" target=_blank>cette page</a>.</description>
		<link>http://www.clubic.com/demo-jeux-video-6159-0-dungeon-runners.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-6159-0-dungeon-runners.html</guid>
		<pubDate>Fri, 25 May 2007 22:07:07 +0200</pubDate>
		<category>Jeux de rôles > Action</category>
	</item>
 	<item>
 		<title>Call for Heroes : Pompolic Wars - Démo jouable #2</title>
		<description>Un tout petit peu plus grosse que la précédente, cette seconde démo jouable nous permet de découvrir une autre partie du jeu en incarnant l'amazone.</description>
		<link>http://www.clubic.com/demo-jeux-video-7087-0-call-for-heroes-pompolic-wars.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7087-0-call-for-heroes-pompolic-wars.html</guid>
		<pubDate>Fri, 25 May 2007 22:00:30 +0200</pubDate>
		<category>Jeux de rôles > Action</category>
	</item>
 	<item>
 		<title>Pacific Storm 2 - Démo jouable #1</title>
		<description>Plusieurs missions d'entraînement sont disponibles dans cette démo qui propose de découvrir les aspects RTS et simulation du jeu sur deux cartes (Pearl Harbor et Hodds vs Bismarck).</description>
		<link>http://www.clubic.com/demo-jeux-video-7004-0-pacific-storm-2.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7004-0-pacific-storm-2.html</guid>
		<pubDate>Fri, 25 May 2007 21:46:44 +0200</pubDate>
		<category>Stratégie > Temps réel</category>
	</item>
 	<item>
 		<title>Colin McRae : DIRT - Démo jouable #1</title>
		<description>Un petit aperçu du jeu avec cette démo jouable permettant de découvrir trois types de courses sur trois circuits différents et avec trois véhicules différents (Mitsubishi Lancer Evo IX, buggy CORR classe 1 et Subaru Impreza).</description>
		<link>http://www.clubic.com/demo-jeux-video-7045-0-colin-mcrae-dirt.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7045-0-colin-mcrae-dirt.html</guid>
		<pubDate>Thu, 24 May 2007 12:09:12 +0200</pubDate>
		<category>Sport & Simulation > Auto-Moto & Rallye</category>
	</item>
 	<item>
 		<title>Attack On Pearl Harbor - Démo jouable #2</title>
		<description>Un peu plus de 140 Mo, c'est le poids de cette version de démonstration de Attack On Pearl Harbor.</description>
		<link>http://www.clubic.com/demo-jeux-video-7116-0-attack-on-pearl-harbor.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7116-0-attack-on-pearl-harbor.html</guid>
		<pubDate>Tue, 22 May 2007 17:26:25 +0200</pubDate>
		<category>Sport & Simulation > Vol</category>
	</item>
 	<item>
 		<title>Lost Planet : Extreme Condition - Démo jouable #2 - DirectX 10</title>
		<description>Deux missions sont au programme de cette version de démonstration de Lost Planet : Extreme Condition (DirectX 9).</description>
		<link>http://www.clubic.com/demo-jeux-video-8295-0-lost-planet-extreme-condition.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-8295-0-lost-planet-extreme-condition.html</guid>
		<pubDate>Wed, 16 May 2007 07:59:33 +0200</pubDate>
		<category>Action > Divers</category>
	</item>
 	<item>
 		<title>Sam & Max Episode 6 : Bright Side Of The Moon - Démo jouable #1</title>
		<description>Un peu moins de 80 Mo, c'est le poids de cette version de démonstration du sixième épisode de Sam & Max appelé Bright Side Of The Moon.</description>
		<link>http://www.clubic.com/demo-jeux-video-7786-0-sam-max-episode-6-bright-side-of-the-moon.html</link>
		<guid>http://www.clubic.com/demo-jeux-video-7786-0-sam-max-episode-6-bright-side-of-the-moon.html</guid>
		<pubDate>Fri, 11 May 2007 11:53:01 +0200</pubDate>
		<category>Aventure > Enigme</category>
	</item>
</channel>
</rss>
Et voici le code purebasic pour l'exploité (utilise le débogeur pour afficher les informations) :

Code : Tout sélectionner

Global mainchild.l, nodechild.l

LoadXML(0, "demo.xml")

*node = XMLNodeFromPath(MainXMLNode(0), "channel/") ;On récupère le noeud global, channel contient toutes les informations qui nous intéressent.
mainchild = XMLChildCount(*node)-10 ;On compte le nombre de sous noeuds (item, image et information du site), on enlève 10 pour enlever les noeuds image et les informations sur le site.
Debug "MainChild : " + Str(mainchild)
Debug " "

*node = XMLNodeFromPath(MainXMLNode(0), "channel/item") ;On récupère les noeud item
nodechild = XMLChildCount(*node) ;On compte le nombre de noeud item que contient le fichier xml
Debug "NodeChild : " + Str(nodechild)
Debug " "

For i=1 To mainchild ;On boucle le nombre de noeud item trouvé

  For h=1 To nodechild ;On boucle avec le nombre de sous noeud que contient chaque item
    *child = ChildXMLNode(*node, h) ;On récupère un par un les sous noeud du noeud item
    Debug GetXMLNodeName(*child) + " : " + GetXMLNodeText(*child)
  Next
  Debug " "
  *node = NextXMLNode(*node) ;On passe au noeud item suivant.

Next
Voilà, le code n'est surement pas parfait, mais c'est pour montré les bases.
(Surtout qu'il n'y a pas de doc française pour le moment)

Publié : jeu. 28/juin/2007 6:47
par Thyphoon
c'est intéressant ça merci ! mais je ne sais pas pourquoi je n'arrive pas a utiliser ton exemple sur la liste Xml de l'emulateur Mame.
télécharger mame ici : http://mamedev.org/releases/mame0116b.exe
décompresser le et une fois décompresser en ligne de commande faire
mame.exe -listxml >mame.xml
ça vas créer le fichier xml contenant les données (27Mo)

Publié : jeu. 28/juin/2007 14:02
par Flype
@typhoon,
histoire d'unicode/utf-8 peut-être ?

Publié : jeu. 28/juin/2007 14:17
par Thyphoon
Flype a écrit :@typhoon,
histoire d'unicode/utf-8 peut-être ?
a oui peut-être.... je vais chercher de ce côté...merci pour la piste ! :p

Publié : jeu. 28/juin/2007 14:23
par Flype
apparemment non en fait.

plutot une histoire d'interpretation des blocs <!DOCTYPE> et <!ELEMENT>

essaye de couper le bloc doctype depuis notepad. et reessaye pour voir...

Publié : jeu. 28/juin/2007 17:07
par Thyphoon
j'ai trouvé un code sur le forum anglais qui permet de lire le fichier...

Code : Tout sélectionner

file$ = "mame.xml"

Procedure ShowNode(label$, *node)
; Display node attributes and text
Protected tab$ = Space(4), text$
If *node
  Debug label$+":"
  Debug tab$+"Node name = "+GetXMLNodeName(*node)
  ExamineXMLAttributes(*node)
  While NextXMLAttribute(*node)
    Debug tab$+XMLAttributeName(*node)+" = "+XMLAttributeValue(*node)
  Wend
  text$ = GetXMLNodeText(*node)
  text$ = Trim(ReplaceString(text$, #CRLF$, " "))
  Debug tab$+"Node text = "+text$
  Debug tab$+"Child nodes = "+Str(XMLChildCount(*node))
EndIf
EndProcedure

tree = LoadXML(#PB_Any, file$)
Debug "Tree = "+Str(tree)
status = XMLStatus(tree)
Debug "Status = "+Str(status)
If status=0
  *node = MainXMLNode(tree)
  While *node
    ShowNode("Parent", *node)
    For child = 1 To XMLChildCount(*node)
      *child = ChildXMLNode(*node, child)
      ShowNode("Child "+Str(child), *child)
;       For grandchild = 1 To XMLChildCount(*child)
;         *grandchild = ChildXMLNode(*child, grandchild)
;         ShowNode("Grandchild "+Str(grandchild), *grandchild)
;       Next grandchild
    Next child
    *node = NextXMLNode(*node)
  Wend
  FreeXML(tree) 
EndIf
End
me reste plus qu'a comprendre comment ça marche pour ne lire que les information qui m'intéresse :P

Publié : jeu. 28/juin/2007 17:59
par Flype
c'est tout l'interet du xml :wink:

Publié : jeu. 28/juin/2007 18:15
par Thyphoon
Flype a écrit :c'est tout l'interet du xml :wink:
lolllllllllll j'avoue que j'ai eu plusieurs formation sur le XML..
mais je n'ai jamais comprit l'intérêt de cette structuration.
Le seul interêt c'est que visuellement on peut modifier les données a la main..mais personne ne fait ça ...le XML finalement prend beaucoup, beaucoup plus de place qu'une structure plus primaire...
A si le seul interet est le melange avec le html qui donne le Xhtml mais sinon ...
:P
Et comme je n'ai jamais pratiqué apres mes formations... ba j'avoue que je nage un peu ... ;)

Publié : ven. 29/juin/2007 12:20
par wolfjeremy
Thyphoon a écrit : A si le seul interet est le melange avec le html qui donne le Xhtml mais sinon ...
Le XHTML n'a rien a voir avec le xml... c'est juste l'évolution du html (le html va être repris comme standart, mais le xhtml va continuer à évoluer)

Publié : ven. 29/juin/2007 12:31
par Thyphoon
wolfjeremy a écrit : Le XHTML n'a rien a voir avec le xml... c'est juste l'évolution du html (le html va être repris comme standart, mais le xhtml va continuer à évoluer)
Sauf erreur de ma part il me semble bien qu'on s'est inspiré de l'xml pour normaliser l'Html et que ça donne le xhtml, et qu'un parser XML marche tres bien pour de l'Xhtml. non ?

Publié : ven. 29/juin/2007 12:56
par minirop
Thyphoon a écrit :Sauf erreur de ma part il me semble bien qu'on s'est inspiré de l'xml pour normaliser l'Html et que ça donne le xhtml, et qu'un parser XML marche tres bien pour de l'Xhtml. non ?
y'a pas d'erreur. Et c'est du à cette XML-standardisation que des balises comme <font> ont disparues

Publié : ven. 29/juin/2007 16:59
par lionel_om
Thyphoon a écrit : A si le seul interet est le melange avec le html qui donne le Xhtml mais sinon ...
Y'a de plus en plus de langages (ou méta-langages) qui se crée autour du XML : DTD, XSLT, XPath, XML Schema ...
Le XML permet d'avoir des fichiers de données structurées (comme une BDD), mais sans la contrainte d'avoir un serveur de BDD avec l'application créée.
Le XML est pratique pour "gérer" des petites BDD et peut être parsé facilement. C'ets plus propre qu'un fichier INI.

Mais tout dépend de nos besoins. La multitude de langage permet de choisir qui convient le mieux :D

Lio

Publié : ven. 29/juin/2007 17:10
par Thyphoon
minirop a écrit : y'a pas d'erreur. Et c'est du à cette XML-standardisation que des balises comme <font> ont disparues
Il me semble qu'en vérité la disparition de <font> c'est tout simplement qu'il y en avait tout simplement plus besoin grace au CSS
lionel_om a écrit : Y'a de plus en plus de langages (ou méta-langages) qui se crée autour du XML : DTD, XSLT, XPath, XML Schema ...
Le XML permet d'avoir des fichiers de données structurées (comme une BDD), mais sans la contrainte d'avoir un serveur de BDD avec l'application créée.
Le XML est pratique pour "gérer" des petites BDD et peut être parsé facilement. C'ets plus propre qu'un fichier INI.

Mais tout dépend de nos besoins. La multitude de langage permet de choisir qui convient le mieux :D

Lio
Oui c'est sur ..mais j'avoue que j'ai du mal a m'y mettre au XML... J'arrive jamais a faire quelques choses de simple.... alors que pour structurer des données plusieurs tableau sous forme de CSV qu'on peut croisé c'est largement plus simple je trouve...

J'ai toujours pas réussi a faire en sorte de sortir de mon fichier mame.xml, des paramètres bien précis, comme le nom, la date etc...