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 requête Xpath


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Fabouney
    Invité(e)
    Par défaut [DOM] problème de requête Xpath
    bonjour à tous,

    j'ai u nfichier xml comme ceci :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <mobibase>
      <song id_song="5089">
        <title>Let_It_Be</title> 
        <artist>The_Beatles</artist> 
        <date_added>2006-01-04</date_added> 
        <date_update>2006-01-09</date_update> 
          <file id_file="134">
             <nom>000134-The_Beatles-Let_It_Be.mp3</nom> 
             <track_type>Instrumental</track_type> 
             <crc32>435948014</crc32> 
             <size>5514057</size> 
           </file>
        </song
    </mobibase>

    si je fait cette requête Xpath, il me retourne aucuns résultat, et je ne vois pas pk :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $xmlObject = new DomDocument();
    $xmlObject->load($fichierXML);
    $xmlPath = new DomXpath($xmlObject);
    $songXpath = "//mobibase/song[id_song=\"5089\"]";
    $result = $xmlPath->query($songXpath);
    echo $result->length."<br>";
    par contre si je recherche tt les song ("//mobibase/son")
    cela fonctionne.

    seriez-vous pourquoi ?
    Dernière modification par julp ; 29/04/2007 à 17h38.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    et comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $songXpath = "//mobibase/song[@id_song=\"5089\"]";
    ca fait un momment que je n'ai pas pratiqué mais je crois qu'il une histoire @
    http://www.w3.org/TR/xpath

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    Ah bah vraiment merci jeff, comme quoi les doc c'est pas tjrs .... dans mon bouquin, ils mettent pas le @ ....
    enfin merci bien
    Dernière modification par Fabouney ; 29/09/2006 à 11h52.

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    Another question ! lol
    désolé ...

    le résultat de mon Xpath me retourne le noeud <file>

    mon objectif c'est de modifier la valeur des noeuds <crc32>, <track_type>, <size>.
    pour infos, j'ai regarder dans la doc de DOM la méthode replaceChil() et je la trouve vraiment, mais alors vraiment pas clair.

    faut-il que je parcours les enfants de mon noeud?
    et que pour chaque enfants, je fait appel à la méthode replaceChild() pour modifier son contenu ?

    j'avais commencé à faire ceci, mais franchement je trouve pas de solutions, c'est plutot frustrant :

    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
    $xmlObject = new DomDocument();
    $xmlObject->load($fichierXML);
    $xmlPath = new DomXpath($xmlObject);
    $nodesList = $xmlPath->query("//mobibase/song[@id_song='$sid']/file[@id_file='$sfid']");
    $node = $nodesList->item(0);
    //parcours des enfants du noeuds trouvé
    foreach($node->childNodes as $c)
    {
    //selon le nom du noed, on initialise les variables
    if($c->nodeType == XML_ELEMENT_NODE)
    {
    	switch($c->nodeName)
    	{
    		case 'track_type' : ... ;
    	}
    }
    }
    $xmlObject->saveXML();
    :'(

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    tu a juste te placer sur le noeud en question et utilisé la methode nodeValue
    et c'est tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $c->nodeValue = $newCRC

  6. #6
    Fabouney
    Invité(e)
    Par défaut
    j'ai testé de faire ca .... et puis faire un saveXML aprés
    mais il change rien du tout :s

Discussions similaires

  1. Problème de "requête" XPath
    Par Tuttu dans le forum C#
    Réponses: 5
    Dernier message: 19/09/2012, 10h35
  2. Réponses: 4
    Dernier message: 12/07/2011, 15h20
  3. [XPATH] [JDOM] Problème de requête XPath
    Par coco62 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 08/07/2008, 11h57
  4. [xPath et VBA-E]Problème de requête avec xPath
    Par EvaristeGaloisBis dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/06/2008, 09h11
  5. [DOM] Problème bizarre avec DOM et XPath
    Par fragmonster dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/03/2006, 14h43

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