Extraire certaines données d'un document XML
NiCo
Bonjour,

Voilà, je voudrais extraire certaines données d'un document XML dans le but de remplir une liste. L'ennui, c'est que même avec l'aide de WinDev, je ne parviens pas à obtenir un résultat correct.

Voici le code que j'utilise actuellement (ne se base pas sur les fonctions XML, ce qui pose un problème lorsque certaines données manquent, comme les données <epg_xxxx> par exemple) :

// Déclaration des variables
name, logo, epgtype, epgstart, epgend, epgtitle sont des chaînes
AudienceId = fOuvre("audience15.xml", foLecture)
BOUCLE
name = fLitLigne(AudienceId)
logo = fLitLigne(AudienceId)
SI HTTPRequête(logo) ALORS
fSauveTexte("AudienceIcones\" + logo[[ 33 A ]], HTTPDonneRésultat(HTTPRésultat))
logo = logo[[ 33 A ]]
SINON
logo = ""
FIN
epgtype = fLitLigne(AudienceId)
epgstart = fLitLigne(AudienceId)
epgend = fLitLigne(AudienceId)
epgtitle = fLitLigne(AudienceId)
ListeAjoute(FWAR.ListeChaines, gImage("AudienceIcones\" + logo) + name + " : " + epgtitle + RC + "Type : " + epgtype + RC + "Début : " + epgstart + " - Fin : " + epgend)
A FAIRE TANTQUE fLitLigne(AudienceId) <> EOT

Comme vous le voyez, si certaines onnées manquent, tout est faussé. Je donne un fichier audience15.xml d'exemple por celui qui voudra bien me faire ça. Pour la listeAjoute, Si pour une donnée <name> il n'y a pas de donnée <epg_*> correspondante , je souhaiterai que "inconnu" s'affiche à la place.

Voici le fichier de tests

<?xml version="1.0" encoding="ISO-8859-1"?>
<audience15>
<refresh>60</refresh>
<url>http://audience.free.fr/audience15.xml</url>
<channel>
<rank>1</rank>
<name>France 2</name>
<market_share>10.35</market_share>
<logo_url>http://img3.free.fr/im_tv/small/fr2.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>13:00</epg_start>
<epg_end>13:50</epg_end>
<epg_title>Journal</epg_title>
</channel>
<channel>
<rank>2</rank>
<name>Gulli</name>
<market_share>7.50</market_share>
<logo_url>http://img3.free.fr/im_tv/small/gulli.gif</logo_url>
<epg_type>Série</epg_type>
<epg_start>13:05</epg_start>
<epg_end>13:35</epg_end>
<epg_title>Sabrina</epg_title>
</channel>
<channel>
<rank>3</rank>
<name>France 3</name>
<market_share>5.32</market_share>
<logo_url>http://img3.free.fr/im_tv/small/fr3.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>12:55</epg_start>
<epg_end>13:25</epg_end>
<epg_title>12/14 : Edition régionale</epg_title>
</channel>
<channel>
<rank>4</rank>
<name>W9</name>
<market_share>4.75</market_share>
<logo_url>http://img3.free.fr/im_tv/small/w9.gif</logo_url>
<epg_type>Série</epg_type>
<epg_start>12:50</epg_start>
<epg_end>13:15</epg_end>
<epg_title>Les Simpson</epg_title>
</channel>
<channel>
<rank>5</rank>
<name>AB 1</name>
<market_share>4.63</market_share>
<logo_url>http://img3.free.fr/im_tv/small/ab1.gif</logo_url>
<epg_type>Série</epg_type>
<epg_start>12:45</epg_start>
<epg_end>13:10</epg_end>
<epg_title>Friends</epg_title>
</channel>
<channel>
<rank>6</rank>
<name>MTV France</name>
<market_share>3.92</market_share>
<logo_url>http://img3.free.fr/im_tv/small/mtv.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>12:30</epg_start>
<epg_end>13:30</epg_end>
<epg_title>Made</epg_title>
</channel>
<channel>
<rank>7</rank>
<name>France 5</name>
<market_share>3.53</market_share>
<logo_url>http://img3.free.fr/im_tv/small/fr5.gif</logo_url>
<epg_type>Magazine</epg_type>
<epg_start>12:05</epg_start>
<epg_end>13:40</epg_end>
<epg_title>Midi les zouzous</epg_title>
</channel>
<channel>
<rank>8</rank>
<name>CANAL+</name>
<market_share>3.14</market_share>
<logo_url>http://img3.free.fr/im_tv/small/canal.gif</logo_url>
<epg_type>Magazine</epg_type>
<epg_start>12:35</epg_start>
<epg_end>13:40</epg_end>
<epg_title>Nous ne sommes pas des anges En clair</epg_title>
</channel>
<channel>
<rank>9</rank>
<name>Game One</name>
<market_share>2.86</market_share>
<logo_url>http://img3.free.fr/im_tv/small/gameone.gif</logo_url>
<epg_type>Magazine</epg_type>
<epg_start>12:55</epg_start>
<epg_end>13:30</epg_end>
<epg_title>Play Hit</epg_title>
</channel>
<channel>
<rank>10</rank>
<name>M6 Music Black</name>
<market_share>2.61</market_share>
<logo_url>http://img3.free.fr/im_tv/small/m6musicblack.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>12:15</epg_start>
<epg_end>16:00</epg_end>
<epg_title>Hits</epg_title>
</channel>
<channel>
<rank>11</rank>
<name>NRJ 12</name>
<market_share>2.26</market_share>
<logo_url>http://img3.free.fr/im_tv/small/nrj.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>13:00</epg_start>
<epg_end>13:30</epg_end>
<epg_title>Marina en backstage</epg_title>
</channel>
<channel>
<rank>12</rank>
<name>Euronews</name>
<market_share>2.17</market_share>
<logo_url>http://img3.free.fr/im_tv/small/euronews.gif</logo_url>
<epg_type>Magazine</epg_type>
<epg_start>13:00</epg_start>
<epg_end>15:00</epg_end>
<epg_title>L'information de la mi-journée</epg_title>
</channel>
<channel>
<rank>13</rank>
<name>NT1</name>
<market_share>2.07</market_share>
<logo_url>http://img3.free.fr/im_tv/small/nt1.gif</logo_url>
<epg_type>Série</epg_type>
<epg_start>12:35</epg_start>
<epg_end>13:25</epg_end>
<epg_title>Les vacances de l'amour</epg_title>
</channel>
<channel>
<rank>14</rank>
<name>Boomerang</name>
<market_share>1.87</market_share>
<logo_url>http://img3.free.fr/im_tv/small/boomrang.gif</logo_url>
<epg_type>Autre</epg_type>
<epg_start>12:50</epg_start>
<epg_end>13:15</epg_end>
<epg_title>Titi et Grosminet mènent l'enquête</epg_title>
</channel>
<channel>
<rank>15</rank>
<name>M6 Music Hits</name>
<market_share>1.86</market_share>
<logo_url>http://img3.free.fr/im_tv/small/m6musichits.gif</logo_url>
</channel>
<copyright>Source: Free - Audience ensemble Freebox TV: Audience15Live - February 2006 - Copyright Free - Tous droits réservés -</copyright>
</audience15>

Merci d'avance à celui qui voudra bien m'aider.

Contribution le : 09/02/2006 16:03
Créer un fichier PDF de la contribution Imprimer


Re: Extraire certaines données d'un document XML
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Le mieux est de passer par des classes.
Une classe Cl_Channel qui contient les infos du channel (rank, ...)
Une classe Cl_Gestion_Channel qui contient un tableau dynamique de Cl_Channel.
Ajoutez une méthode Ajout_Channel dans la classe Cl_Gestion_Channel.

Une fois le tableau rempli, il suffit de le parcourir et de tester les infos sur chaque channel.

Bon dév.,

Totof

Contribution le : 17/02/2006 13:59
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: Extraire certaines données d'un document XML
Developpeur WDF
Inscrit:
24/01/2006 13:42
De Chartres
Post(s): 142
Je me demande bien a quoi sert les parseurs ????
XMLpremier XML... cf l'aide

Contribution le : 17/02/2006 16:29
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2