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] Accéder aux attributs d'un objet


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Par défaut [SimpleXML] Accéder aux attributs d'un objet
    Bonjour

    j'ai un objet $foo qui me retourne la valeur ci-dessous quand je fais un print_r (il s'agit d'un flux xml)
    Je voudrais atteindre directement sans boucle la valeur de href dans le 2eme tableau mais je ne vois pas comment faire.

    J'ai essayé avec echo $objet['href']; mais cela me renvoit la valeur de href dans le premier tableau, pas le deuxieme
    Est-ce que je suis obligé de faire une boucle sur la tableau du style donne moi la valeur de [href] si [rel]=enclosure
    Merci pour votre aide, ci-dessous le resultat de print_r($objet)

    Code : 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
    SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [rel] => alternate
                [type] => text/xhtml
                [title] => Title
                [href] => /mapage/toto
            )
     
    )
    SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [rel] => enclosure
                [title] => Title
                [width] => 384
                [height] => 288
                [href] => http://www.xxxxxx.com/swf/2W7qlUF4jTKH
                [type] => application/x-shockwave-flash
            )
     
    )

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    pour accéder directement à l'attribut, utilise $objet->href

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Par défaut
    ça ne renvoie rien
    je ne comprends d'ailleurs pas comment on peut trouver plusieurs fois [@attributes] dans cet objet
    une idée?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Normalement vous pouvez l'atteindre directement mais la notion de "tableau" n'a aucune signification ici puisque le document XML possède une structure hiérarchique que l'on retrouve lors de l'exploitation avec une API et c'est d'autant plus vrai avec l'extension SimpleXML de par sa conception. Bref, il faudrait être plus précis et un exemple de document XML serait bien plus parlant.

    Pour illustrer mes propos, soit le document XML suivant :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <A attr="val_a">
        <B attr="val_b1">
            <C/>
        </B>
        <B attr="val_b2">
            <C>
                <D>texte</D>
            </C>
        </B>
    </A>
    Et la création de l'objet SimpleXML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sxml = simplexml_load_file('mon_fichier.xml');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $sxml->B[1]['attr']; // Résultat : "val_b2"
     
    foreach ($sxml->B as $b) {
        echo $b['attr']; // Résultat : "val_b1" puis "val_b2"
    }
     
    echo $sxml->B[1]->C->D; // Résultat : "texte"
     
    # ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Par défaut
    merci, je fais effectivement marcher mon script dans le cadre d'une api dailymotion

    Prenons donc un exemple avec une url et le flux atom associé
    http://www.dailymotion.com/atom/vide...ience_creation


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="utf-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom">
      <title>En chien de faience</title>
      <published>2007-01-20T01:26:16+01:00</published>
      <updated>2007-08-27T18:35:38+02:00</updated>
      <id>http://www.dailymotion.com/video/x10qmn_en-chien-de-faience_creation</id>
      <entry>
        <link rel="alternate" type="text/xhtml" href="/atom/htmls/video/x10qmn_en-chien-de-faience_creation" title="En chien de faience"/>
        <link rel="enclosure" title="En chien de faience" width="320" height="240" href="http://www.dailymotion.com/swf/312avXBoEGleO7bVd" type="application/x-shockwave-flash"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $request = 'http://www.dailymotion.com/atom/video/x10qmn_en-chien-de-faience_creation';
     
    $session = curl_init($request);
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($session);
    curl_close($session); 
     
    $parsed_xml = simplexml_load_string($response);
     
    print_r($parsed_xml);
    et je souhaiterais donc accéder à la valeur de l'attribut href sur le 2eme tag link
    <link rel="enclosure" title="En chien de faience" width="320" height="240" href="http://www.dailymotion.com/swf/312avXBoEGleO7bVd" type="application/x-shockwave-flash"/>
    Code : 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
    SimpleXMLElement Object
    (
        [title] => En chien de faience
        [published] => 2007-01-20T01:26:16+01:00
        [updated] => 2007-08-27T18:35:38+02:00
        [id] => http://www.dailymotion.com/video/x10qmn_en-chien-de-faience_creation
        [entry] => SimpleXMLElement Object
            (
                [link] => Array
                    (
                        [0] => SimpleXMLElement Object
                            (
                                [@attributes] => Array
                                    (
                                        [rel] => alternate
                                        [type] => text/xhtml
                                        [href] => /atom/htmls/video/x10qmn_en-chien-de-faience_creation
                                        [title] => En chien de faience
                                    )
     
                            )
     
                        [1] => SimpleXMLElement Object
                            (
                                [@attributes] => Array
                                    (
                                        [rel] => enclosure
                                        [title] => En chien de faience
                                        [width] => 320
                                        [height] => 240
                                        [href] => http://www.dailymotion.com/swf/2BDdDWEPOyv557bVd
                                        [type] => application/x-shockwave-flash
                                    )
     
                            )
    j'espere que ma réponse apporte les éclaircissements nécessaires sur ma question

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 673
    Par défaut
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $parsed_xml->entry->link[1]['href']

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

Discussions similaires

  1. Accéder aux attribut d'un objet
    Par bakman dans le forum Services Web
    Réponses: 1
    Dernier message: 05/03/2013, 13h51
  2. Réponses: 3
    Dernier message: 09/06/2007, 01h28
  3. Réponses: 4
    Dernier message: 11/04/2007, 14h26
  4. Réponses: 11
    Dernier message: 08/06/2006, 15h08
  5. Urgent: accéder aux pixels d'un objet IPicture
    Par bikini42 dans le forum MFC
    Réponses: 4
    Dernier message: 06/01/2006, 09h44

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