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] Problème de récupération de données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut [DOM] Problème de récupération de données
    Bonjour à tous,

    Je me retrouve en face d'un petit problème que je ne comprends pas.

    Voici un morceau de ma définition XSD :

    <xs:element type="xs:string" name="stocksuffisant" minOccurs="1" maxOccurs="1" />
    J'ai ensuite un fichier XML qui contient :

    <stocksuffisant>yes</stocksuffisant>
    Lorsque je récupère mon XML de ma base de données, je le charge dans un DOM :

    $doc = new SchemaDOMDocument('1.0'); // création d'un nouvel objet XML
    $doc->validateOnParse = true;
    $doc->loadXML($xmldocument); // loading dand l'objet XML du document XML
    if($doc->validateXMLSchemas($this->schema, true)){ // si l'objet est valide par rapport au XSD ($this->schema)
    return $doc;
    }
    Et finalement j'aimerais parser ce $doc dans une fonction m'affichant un formulaire pour insérer dans le formulaire les valeurs contenues dans le XML :

    $stocksuffisantobject = $doc->getElementsByTagName('stocksuffisant')->item(0);
    print_r($stocksuffisantobject);
    Ces lignes de codes me retourne bien "DOMElement Object ( ) ".

    Maintenant j'aimerais accéder à la valeur de ce DOMElement. J'ai cherché ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
     
    $dom = new DOMDocument('1.0', 'iso-8859-1');
     
    $element = $dom->createElement('test', 'Ceci est l\'élément racine !');
     
    // Nous insérons le nouvel élément en tant que racine (enfant du document)
    $dom->appendChild($element);
     
    echo $dom->saveXML();
    ?>
    Et j'ai vu ça :

    value : La valeur de l'élément. Par défaut, un élément vide sera créé. Vous pouvez également définir la valeur plus tard avec la fonction DOMElement->nodeValue .
    Mais dans cette même doc, impossible de trouver cette fonction nodeValue()

    En fait, il n'y a que des fonctions pour récupérer les attributs d'un DOMElement, rien pour la valeur de l'élément, ce qui me gène un peu.


    NOTE : Je pourrais en fait enregistrer ma valeur "yes" dans un attribut à la place de mettre un <element type="xs:string">, mais je me demande par simple curiosité comment faire pour récupérer une valeur d'un DOMElement. Il est bien clair que si la fonction DOMElement->createElement() prend deux arguments dont un est une valeur, il y a un moyen pour récupérer cette valeur...

    C'est la doc de la librairie qui est mal documentée (oublis, incohérence ou autre) ou je suis complètement aveugle et j'ai raté la bonne fonction sur DOMElement?

    Merci d'avance pour vos réponse.

  2. #2
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    Remarque : j'ai bien entendu tenté de reprendre la valeur en considérant que c'était un champs de la classe DOMElement.

    $stocksuffisantobject->stocksuffisant;
    Cette tentative retourne :

    Notice: Undefined property: DOMElement::$stocksuffisant in -------.php on line xxx

  3. #3
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    C'est bon pour SimpleXML cette "syntaxe".

    Avec DOM, ce serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stocksuffisantobject = $doc->getElementsByTagName('stocksuffisant')->item(0);
    $stocksuffisantobject->nodeValue = "ma nouvelle valeur";
    nodeValue étant une propriété et non une méthode.

  4. #4
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    Je te remercie, j'ai confoncu simpleXML et DOM.

    J'avais pensé à un truc du genre, j'avais testé la propriété ->value
    Mais j'avais par contre pas pensé que ce serait ->nodeValue

    C'est réglé... et ça marche.

    Merci pour tout

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 27/07/2006, 13h51
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [MySQL] problème de récupération de données incompréhensible
    Par yanice dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 02/07/2006, 22h45
  4. [MySQL] Problème de récupération de données
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 05/04/2006, 15h13
  5. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07

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