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

XSL/XSLT/XPATH XML Discussion :

[XPATH] probleme de lecture


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Par défaut [XPATH] probleme de lecture
    Bonjour,

    j'ai un probléme de lecture et d'ecriture, je vous montre le structure de mon fichier XML , et vous comprendrez mon probleme :

    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
    <mysql>
      <database name="personnes">
        <table>
            <fiche>
              <var name="id">..</var>
              <var name="nom">...</var>
              <var name="prenom">...</var>
              <var name="statut">...</var>
              <var name="formation">...</var>
              <var name="pageWebPerso" generation="auto"></var>
              <var name="photo"></var>
              <var name="distinctions" generation="none"></var>
              <var name="implicationprojet"><projet>projet1</projet><projet>projet2</projet></var>
              <var name="tel"></var>
              <var name="local"></var>
              <var name="courriel"></var>
              <var name="implicationlabo">5059<laboratoire>..</laboratoire></var>
            </fiche>
        </table>
      </database>
    </mysql>
    Mon probléme est avec le champs implicationprojet, comment je pourrai lire les valeurs projet1 et projet2 , avec une expression XPath, de meme comment je vais ecrire un noeud avec cette facon ?

    pour la lecture j'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function imp ($fiche)
    {
    	$xpath = new DOMXPath($fiche->ownerDocument);
    	$res = $xpath->query(sprintf('var[@name = "%s"]/*', 'implicationprojet'),$fiche);
    	    if (!$res or $res->length == 1) {
            return $res->item(0)->nodeValue;
        } else {
            return FALSE;
        }
    }
    fiche etant tout le noeud fiche, mais cette fonction ne me retourne qu'un seul projet! je ne comprend pas ou se situe mon erreur, merci de bien vouloir m'aider



    ...

  2. #2
    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
    Vous n'en récupérez qu'un (et encore c'est sa valeur) parce que c'est ce que vous demandez ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return $res->item(0)->nodeValue;
    item(0) : le premier !

    Un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function imp($fiche)
    {
    	$xpath = new DOMXPath($fiche->ownerDocument);
    	return $xpath->query('struct/var[@name = "implicationprojet"]/projet', $fiche);
    }
    suffirait (mais je me suis débrouillé avec les anciens codes qu'il me restait). Ainsi la fonction renvoie une DomNodeList avec vos "projets" (une boucle foreach vous permettra de parcourir ce résultat).

    Quant à la question d'écrire : qu'entendez-vous par là ? En ajouter, autre ?

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Par défaut
    j'ai utilisé ta fonction avec une petite modification (vu que la balise struct a été supprimée)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function imp($fiche)
    {
    	$xpath = new DOMXPath($fiche->ownerDocument);
    	return $xpath->query('var[@name = "implicationprojet"]/projet', $fiche);
    }
    et ce code pour afficher le resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $impl = imp($fiche);
    								for($i=0;$i<$imlp->length;$i++)
    								{
    									echo $impl->item($i)->nodeValue ." ";
    								}
    mais ca ne m'affiche rien du tout


    pour l'ecriture, ce que je veux dire, c'est quelle expression xpath me permettrai d'ecrire plusieurs <projet></projet> dans la balise <implicationprojet></implicationprojet>


    merci beaucoup



    ...

  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
    Citation Envoyé par Mo_Poly
    j'ai utilisé ta fonction avec une petite modification (vu que la balise struct a été supprimée)
    Oui je n'avais pas remarqué cette différence.

    Euh, n'y aurait-il pas une faute de frappe dans votre code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<$imlp->length;$i++)
    Si non que donne un var_dump sur $impl ? (une boucle foreach, à mon sens, est ici plus idiomatique mais le résultat est le même)

    Citation Envoyé par Mo_Poly
    pour l'ecriture, ce que je veux dire, c'est quelle expression xpath me permettrai d'ecrire plusieurs <projet></projet> dans la balise <implicationprojet></implicationprojet>
    Le plus simple consiste certainement à récupérer son parent immédiat (<var name="implicationprojet">), vous permettant d'ajouter à la suite des autres, un nouveau fils projet (méthode appendChild).

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 379
    Par défaut
    Lol oui c'est une fautre de frappe

    Ca marché pour la lecture et l'ecriture , merci beaucoup


    ...

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

Discussions similaires

  1. [C#] Probleme de lecture de valeur nulle
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 25/10/2010, 16h58
  2. Probleme de lecture d'image
    Par NicolasR dans le forum Java ME
    Réponses: 13
    Dernier message: 28/07/2005, 14h47
  3. [xml]probleme de lecture
    Par mavina dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 22/07/2005, 08h34
  4. Probleme de lecture de classe
    Par wkd dans le forum Composants
    Réponses: 5
    Dernier message: 21/05/2004, 15h20
  5. [LG]probleme de lecture de base de données
    Par jf dans le forum Langage
    Réponses: 14
    Dernier message: 26/06/2003, 15h57

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