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] Ordonner noeuds


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut [DOM] Ordonner noeuds
    Bonjour,

    Je demande beaucoup de trucs mais j'amerais savoir comment trier les noeuds selon leur date par exemple.

    Date étant attribut du noeud .. date étant sous la forme 124544345 ..

    Tant qu'on y est, comment faire pour afficher seulement 5 noeuds par exemple ?

    Merci

  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
    Citation Envoyé par Klimium
    Je demande beaucoup de trucs mais j'amerais savoir comment trier les noeuds selon leur date par exemple.
    Avec DOM seul c'est impossible (il faudrait le combiner à l'extension XSL et une feuille XSLT voire passer par un tableau, moyennant pas mal de travail).

    Citation Envoyé par Klimium
    Tant qu'on y est, comment faire pour afficher seulement 5 noeuds par exemple ?
    Avec une itération ou une expression XPath (via position()).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    Merci, et si au lieu de vouloir trier par date, je veux que les premiers passent derniers .. (dans l'ordre inverse quoi) ..?
    C'est possible avec seulement DOM ?

    Sinon si tu as le temps, pourrais-tu me faire un exemple ou me montrer un bon tuto pour xsl .. Merci.

  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 Klimium
    Merci, et si au lieu de vouloir trier par date, je veux que les premiers passent derniers .. (dans l'ordre inverse quoi) ..?
    C'est possible avec seulement DOM ?
    Oui mais ça dépend de la structure de votre document :
    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
    22
    <?php
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load('dates.xml');
     
    $xpath = new DomXPath($dom);
    $dates = $xpath->query('/dates/date');
    $pile = array();
    foreach ($dates as $date) {
        if (!isset($pere)) {
            $pere = $date->parentNode;
        }
        array_unshift($pile, $pere->removeChild($date));
    }
    foreach ($pile as $v) {
        $pere->appendChild($v);
    }
     
    header('Content-type: text/plain');
    echo $dom->saveXML();
    ?>
    Avec le document XML particulier :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <dates>
    	<date id="21/06/2007">Après demain</date>
    	<date id="20/06/2007">Demain</date>
    	<date id="19/06/2007">Aujourd'hui</date>
    	<date id="18/06/2007">Hier</date>
    	<date id="17/06/2007">Avant hier</date>
    </dates>
    On obtient :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <dates>
      <date id="17/06/2007">Avant hier</date>
      <date id="18/06/2007">Hier</date>
      <date id="19/06/2007">Aujourd'hui</date>
      <date id="20/06/2007">Demain</date>
      <date id="21/06/2007">Après demain</date>
    </dates>

    Citation Envoyé par Klimium
    Sinon si tu as le temps, pourrais-tu me faire un exemple ou me montrer un bon tuto pour xsl ..
    Consultez les tutoriaux de la rubrique XML ou interrogez Google.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    Tu as du mal comprendre
    Je veux pas modifier le fichier, juste l'affichage sur la page ..

    C'est possible quand même je suppose ..

  6. #6
    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 Klimium
    Je veux pas modifier le fichier, juste l'affichage sur la page ..
    C'est ce qu'il fait (à défaut de connaître les méthodes, on reconnaît les fonctions echo et header pour un simple affichage) Le but d'un parsing DOM est de charger le document XML sous la forme d'un arbre en mémoire. C'est cet arbre qu'on manipule. Vous êtes libres de faire ce que bon vous semble des modifications apportées à cet arbre (l'afficher, le sauvegarder ou non - écraser ou non, ...).

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

Discussions similaires

  1. XML signature, DOM et noeuds null
    Par Saita dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2010, 12h01
  2. DOM, suprimer noeud mais pas le contenu
    Par junix dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/08/2009, 09h37
  3. [Java] Obtenir le XPath d'un noeud DOM
    Par krappa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/09/2005, 17h06
  4. [DOM] Accès au contenu textuel d'un noeud avec DOM
    Par comexe2 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/07/2004, 16h41
  5. Réponses: 2
    Dernier message: 05/06/2004, 12h56

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