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 :

[DOM XML] Utilisation de la classe DOMDocument


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut [DOM XML] Utilisation de la classe DOMDocument
    Bonjour,

    J'ai cree un objet DOMDocument à partir de données HTML pour recuperer une partie de code HTML comme suit:

    $domdoc = new DOMDocument($dataHTML);
    $myTabForm = $domdoc->get_elements_by_tagname('form');
    ...
    ...
    ...

    et qand je souhaite renvoyer cette parite de code j'y arrive pas ($myTabForm) ... du moins ça m'affiche : "Object"
    la fonction "saveHTML()" ne marche pas sur cette objet .. je pense que c'est dû au faite que ce n'est pas un objet DOMDocument
    NB : j'utilise PHP 4.
    une idee pt'etre?!

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour,

    la méthode getElementsByTagName() te retourne un élément de type DOMNodeList.

    Si tu veux afficher l'intégralité de ces noeuds tu peux faire comme indiqué dans la doc de DOMNodeList->item()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $items = $doc->getElementsByTagName('entry');
    foreach ($items as $item) 
        {
        echo $item->nodeValue . "<br/>";    
        }
    ?>
    ou les stocker dans une string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $items = $doc->getElementsByTagName('entry');
    $vListNode = "";
    foreach ($items as $item) 
        {
        $vListNode .= $item->nodeValue . "<br/>";    
        }
    ?>

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    J'ai pas compris : tu veux récupérer tout le contenu HTML de ton formulaire ? T'as essayé de faire $myTabForm->get_content() ou une autre méthode du genre ?

  4. #4
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par _Mac_
    J'ai pas compris : tu veux récupérer tout le contenu HTML de ton formulaire ? T'as essayé de faire $myTabForm->get_content() ou une autre méthode du genre ?
    ça n'affiche rien avec get_content()

  5. #5
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par koopajah
    Bonjour,

    la méthode getElementsByTagName() te retourne un élément de type DOMNodeList.

    Si tu veux afficher l'intégralité de ces noeuds tu peux faire comme indiqué dans la doc de DOMNodeList->item()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $items = $doc->getElementsByTagName('entry');
    foreach ($items as $item) 
        {
        echo $item->nodeValue . "<br/>";    
        }
    ?>
    ou les stocker dans une string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $items = $doc->getElementsByTagName('entry');
    $vListNode = "";
    foreach ($items as $item) 
        {
        $vListNode .= $item->nodeValue . "<br/>";    
        }
    ?>
    ça m'affiche le message d'erreur suivant:
    Call to undefined function: nodevalue() in ##
    peut etre que c'est dû à ma version PHP ?

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    essaie de faire un pour voir ce que tu récupères...

  7. #7
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par koopajah
    essaie de faire un pour voir ce que tu récupères...
    ça m'affiche :

    object(domelement)(4) { ["type"]=> int(1) ["tagname"]=> string(4) "form" [0]=> int(5) [1]=> int(197873184) }

  8. #8
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    $domdoc = new DOMDocument($dataService);
    $myTabForm = $domdoc->get_elements_by_tagname('form');


    for($i=0; $i< count($myTabForm); $i++){

    $classForm = $myTabForm[$i]->get_attribute('class');
    $classFormLow = strtolower($classForm);

    $pos = strrpos($classFormLow, $securedClassName);
    if($pos !== FALSE){
    echo"dedans<br />";

    echo $myTabForm[$i]->get_content();

    }
    }

    voici mon code qui est pour le moment ne m'affiche rien ... sauf biensur "dedans"

  9. #9
    Membre du Club Avatar de lemok
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Points : 52
    Points
    52
    Par défaut
    Je cherche toujours la solution à mon probleme
    euh! je recapitule un peu le probleme pour moi meme je commence à me perdre dans tout ça, alors
    j'ai cree un objet DOMDocument comme suit:

    $domdoc = new DOMDocument($dataService); // $dataService etant un flux HTML.

    J'ai recupéré la partie du code HTML qui m'interesse avec :

    $myTabForm = $domdoc->get_elements_by_tagname('form');

    et je souhaiterai pour le moment envoyer cette partie du code pour l'afficher.
    Je crois qu'il y a une fonction html_dump_mem(); qui fait ça mais j'arrive pas à l'appliquer pour mon cas.

    peut etre que quelqu'un a une idée?!

Discussions similaires

  1. [DOM] Comment ça "Class DomDocument not found" ? (PHP5)
    Par Nullos Oracle dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 13/07/2007, 18h11
  2. [DOM] xml via DomDocument
    Par taffMan dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/04/2007, 18h22
  3. [DOM XML] Comment utiliser DOM(XML)?
    Par hitman94 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/07/2006, 16h16
  4. [DOM] Installer la class DOMDOCUMENT avec php4.3.10
    Par tomchaz dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/06/2006, 11h35
  5. [DOM] Où trouver la classe DomDocument ?
    Par naima2005 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/05/2006, 19h33

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