IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Parser un XML et en récupérer des valeurs


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut [SimpleXML] Parser un XML et en récupérer des valeurs
    salut,

    je ne sais pas trop par ou commencer.. je dois lire ce xml:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <icestats>
    <client_connections>5479</client_connections>
    <clients>4</clients>
    <connections>5569</connections>
    <file_connections>588</file_connections>
    <listener_connections>434</listener_connections>
    <server>Icecast 2.3.1</server>
    <server_start>Mon, 13 Mar 2006 22:56:49 +0100</server_start>
    <source_client_connections>72</source_client_connections>
    <source_relay_connections>0</source_relay_connections>
    <source_total_connections>72</source_total_connections>
    <sources>1</sources>
    <stats>0</stats>
    <stats_connections>0</stats_connections>
     
    <source mount="/encoder">
    <audio_info>
    ice-samplerate=44100;ice-bitrate=128;ice-channels=2
    </audio_info>
    <bitrate>128</bitrate>
    <genre>Multi</genre>
    <ice-bitrate>128</ice-bitrate>
    <ice-channels>2</ice-channels>
    <ice-samplerate>44100</ice-samplerate>
    <listener_peak>2</listener_peak>
    <listeners>2</listeners>
    <listenurl>http://localhost:8000/test</listenurl>
    <max_listeners>unlimited</max_listeners>
    <public>1</public>
    <server_description>Live</server_description>
    <server_name>Live</server_name>
    <server_type>audio/aacp</server_type>
    <slow_listeners>1</slow_listeners>
    <source_ip>xxx</source_ip>
    <stream_start>Fri, 14 Apr 2006 11:54:15 +0200</stream_start>
    <total_bytes_read>1282055125</total_bytes_read>
    <total_bytes_sent>1340359993</total_bytes_sent>
    </source>
     
    </icestats>


    il faudrait bien que je sache lire seulement la node <listeners> de la node <source mount="/encoder"> ...... </node>

    Comment puis-je faire?
    Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 219
    Points : 8 455
    Points
    8 455
    Billets dans le blog
    17
    Par défaut
    lire seulement la node <listeners> de la node <source mount="/encoder">
    Regarde du côté des expressions XPath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //source[@mount="/encoder"]/listeners
    Sous PHP5 et SimpleXML : http://www.php.net/manual/fr/function.simplexml-element-xpath.php

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Salut,

    j'ai réussit à faire plus ou moins ce que je voulais avec des expressions régulières..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		if(eregi("<source mount=\"/encoder\">(.*)</source>",$buffer, $node1)) {
    			eregi("<listeners>(.*)</listeners>",$node1[1], $node2);
    			$listeners = $node2[1];
    }
    else {
    echo "la source est DOWN!";
    }
    seulement, quand j'ai plusieurs <sources> il prend pas le première balise </source> rencontrée, mais la dernière.. comment eviter cela ?

    merci

    ps: je vais regarder du coté de xpath quand meme

  4. #4
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 241
    Points
    8 241
    Par défaut
    il faut que tu créé un tableau et pour chaque occurence de listeners, tu ajoutes un élément dans le tableau

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Pq un tableau?

    j'ai juste besoin du <listeners> de <mountpoint="/encoder"> les autres je m'en balance :-)

    idée?

    merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    trouvé!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $rs = simplexml_load_file($xml);
    foreach($rs->xpath('//source[@mount="/encodeur"]') as $rsrow){
       $row = simplexml_load_string($rsrow->asXML());
       $valeur = $row->xpath('//listeners');
     
       echo $valeur[0];
     
    }
    merci

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 219
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 219
    Points : 8 455
    Points
    8 455
    Billets dans le blog
    17
    Par défaut
    Tu peux faire plus simple en te passant du foreach( ) :

    Le 1er <listeners> du 1er <source mount="encoder"> rencontré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //source[@mount="/encoder"][1]/listeners[1]
    Ou tout simplement le 1er <listeners> rencontré dans le document :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SimpleXML] Parser un XML avec SimpleXML_Load_File
    Par mathieu3392 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 12/10/2007, 11h11
  2. [SimpleXML] Parser du XML dans mon php
    Par onet dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 14/02/2007, 10h09
  3. Récupérer des valeurs de checkbox dans MySQL
    Par digger dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/09/2005, 14h58
  4. [VB.NET] [ODBC] Récupérer des valeurs avec requête ODBC?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2005, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo