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 :

[XML] Simple HTML DOM : first-child()


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Par défaut [XML] Simple HTML DOM : first-child()
    Bonjour à tous, j'utilise SIMPLE HTML DOM (http://simplehtmldom.sourceforge.net/manual_api.htm) afin de traiter des pages RSS.

    J'ai un soucis dans la traduction de mon arborescence, j'ai consulté pas mal de liens mais je ne comprend pas du tout l'architecture et la logique pour traiter les "child" de mon XML.

    Ex :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <item>
    <title>
    Ceci est mon titre
    </title>
    <link>
    http://localhost/index.php?news=10
    </link>
    </item>

    je souhaite récupérer mon titre est mon lien sur chaque "item". J'ai bien tenté plusieurs choses mais sans succès.

    J'ai tenté cela (pour récupérer mon "title") :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $html->find('item')->first_child (0);

    Helas en retour j'obtiens :

    Call to a member function first_child() on a non-object
    J'en déduis que je n'ai pas du comprendre la façon de traiter, sauriez vous via l'exemple ci-dessus me donner une exemple afin de traiter cela ? (récupérer mon title par exemple, puis mon "link".

    un exemple clair me permettrai de bien cerner la logique de ce systeme !

    Merci par avance à ceux qui prendront le temps de me répondre !

  2. #2
    Membre chevronné

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Par défaut
    Bonjour,

    D’après la doc fourni dans le lien, il faut utiliser "first_child" sans paramètre, ou "children" avec 0 en paramètre (sous couvert que le "find" retourne bien ce qui et attendu...).

    Bon courage...

  3. #3
    Membre chevronné Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Par défaut
    J'ai bien tenté comme dans mon exemple ci-dessus, le 1 child désigne l'élément au dessous de l'élément du "find" ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Par défaut
    Bonjour,

    Il faut voir le xml comme un arbre : la branche principale "item" porte deux branches "title" et "link" (dans l'ordre), donc il semble logique que si "$html->find('item')" pointe bien sur la branche "item", le "->firstchild()" pointe sur "title". De la même façon si le find pointe bien sur "item", "->children(0)" pointe sur "title" et "->children(1)" "link". Par contre, ces deux méthodes retournent à nouveau un "element" dont il faut probablement extraire la valeur (peut être "->plaintext" ?).

    Peut etre est il simplement possible de faire "$html->find('item')->title" ou "$html->find('item')->link"?

    Bon courage...

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    $html->find('item') retourne un array donc pour parcourir l'ensemble des éléments il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $item = $html->find('item');
    foreach( $item as $i){
      // traitement
    }
    si tu veux récupérer le 1st item alors il te faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $item = $html->find('item', 0);
    et donc pour récupérer le first_child du 1st item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $titre = $html->find('item', 0)->first_child();
    Lu dans la même doc que vous :
    mixed find ( string $selector [, int $index] ) Find children by the CSS selector. Returns the Nth element object if index is set, otherwise, return an array of object.

    element $e->first_child () Returns the first child of element, or null if not found.

  6. #6
    Membre chevronné Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Par défaut
    Merci pour cette explication, c'est clair maitnenant !

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

Discussions similaires

  1. simple html dom 404
    Par Lekno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/10/2013, 07h28
  2. simple html dom : récupérer valeur attribut title
    Par totof74 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2012, 17h10
  3. Parser une page HTML avec Simple html dom parser
    Par thelover2fr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 24/05/2012, 13h26
  4. PHP Simple HTML DOM Parser
    Par almoha dans le forum Langage
    Réponses: 11
    Dernier message: 02/03/2012, 21h40
  5. API simple html dom
    Par ryodo dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/07/2011, 03h35

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