Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > APIs
APIs DOM, SAX, JAXP,STAX... leur fonctionnement, leurs implémentations Avant de poster -> FAQ XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 21h46   #1
ricardcoca
Invité de passage
 
Fred
Inscription : décembre 2009
Messages : 14
Détails du profil
Informations personnelles :
Nom : Fred

Informations forums :
Inscription : décembre 2009
Messages : 14
Points : 3
Points : 3
Par défaut Enlever les doublouns suite parse d'un flux xml non modifiable

Bonjour ,

Je souhaite pouvoir parser un flux xml dont je ne peux modifier la source .Il contient des valeurs en doublon et je souhaiterais pouvoir les enlever dans mon résultat.

Je vous met ci-dessous le morceaux de mon fichier ou la modification devrait être opéré sur la valeur $songs si qqun a une astuce car je rame depuis plusieurs jours.

Merci d'avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
$mysession = curl_init();
curl_setopt($mysession, CURLOPT_URL, "http://$server/admin.cgi?mode=viewxml");
curl_setopt($mysession, CURLOPT_HEADER, false);
curl_setopt($mysession, CURLOPT_RETURNTRANSFER, true);
curl_setopt($mysession, CURLOPT_POST, false);
curl_setopt($mysession, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($mysession, CURLOPT_USERPWD, "admin:$password");
curl_setopt($mysession, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($mysession, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$xml = curl_exec($mysession);
curl_close($mysession);
$xml = str_replace("'", "'", $xml);
$result = "";
$listeners = "0";
$maxlisteners = "0";
$songs = "";
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_parse($xml_parser, $xml);
xml_parser_free($xml_parser);
$usa = $listeners;
$temp = "";
foreach ($country as $key=>$val) {
   $country = $countries[$key];
   if (strlen($country) > 0) {
      $temp .= ", $country";
      if ($val > 1)
	 $temp .= " ($val)";
      $usa -= $val;
   }
}
$result = "There are currently $listeners out of $maxlisteners listeners from:\n";
$result .= "USA ($usa)$temp";
$result .= $songs;
echo trim($result);
function startElement($parser, $name, $attrs) {
   global $curTag;
   $curTag .= "^$name";
}
function endElement($parser, $name) {
   global $curTag;
   $caret_pos = strrpos($curTag, '^');
   $curTag = substr($curTag, 0, $caret_pos);
}
function characterData($parser, $data) {
   global $curTag;
   global $country;
   global $listeners;
   global $maxlisteners;
   global $songs;
   if ($curTag == "^SHOUTCASTSERVER^LISTENERS^LISTENER^HOSTNAME") {
      $parts = explode(".", $data);
      $i = end($parts);
      $country[$i]++;
   }
   if ($curTag == "^SHOUTCASTSERVER^CURRENTLISTENERS") {
      $listeners = $data;
   }
   if ($curTag == "^SHOUTCASTSERVER^MAXLISTENERS") {
      $maxlisteners = $data;
   }
   if ($curTag == "^SHOUTCASTSERVER^SONGHISTORY^SONG^TITLE") {
      if (strpos($data, " 0:") === false)
         $songs .= "\n$data";
   }
}
ricardcoca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 10h17   #2
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 078
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 078
Points : 10 300
Points : 10 300
Envoyer un message via Skype™ à thelvin
Mais... Pourquoi tu demandes ça dans le forum Java ?
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 21h32   #3
ricardcoca
Invité de passage
 
Fred
Inscription : décembre 2009
Messages : 14
Détails du profil
Informations personnelles :
Nom : Fred

Informations forums :
Inscription : décembre 2009
Messages : 14
Points : 3
Points : 3
Peut etre parce que la section était XML mais tu penses que j'aurais du poster ou ?
ricardcoca est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h04.


 
 
 
 
Partenaires

Hébergement Web