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 :

[XML] Trouver un noeud XML par la valeur d'un attribut


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 23
    Points
    23
    Par défaut [XML] Trouver un noeud XML par la valeur d'un attribut
    Bonjour,
    J'essaye désespérément de vérifier la présence d'un nœud dans un fichier XML et de le créer le cas échéant.

    Ce script créer un fichier XML dans chacun des répertoires qu'il parcourt, intégrant la liste des fichiers du répertoire dans lequel il se trouve.
    Ça marche la première fois.
    Le problème c'est que si je ré-exécute le code, les nœuds sont en double.

    Voici ce que j'ai essayé :

    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
    23
    // Recherche le noeud "file" avec l'attribut "name" = "nom du fichier"
    $xpath = new DOMXPath($doc);
    $query = '/folder/file/@name';
    $nodes = $xpath->query($query);
     
    foreach( $nodes as $path)
    {
    	// il existe ? 
    	if ( $path->nodeValue == $ff )
    	{
    		echo 'file[@name="'.$ff.'"] = > Ok <br>'.PHP_EOL;
    	}
    	else
    	{
    		// Création du noeud
    		$file = $doc->createElement( 'file' );
    		$newfile = $folder->appendChild( $file );
     
    		$newfile->setAttribute("name", $ff);
    		$newfile->setAttribute("title", $ff);
    		$newfile->setAttribute("description", "");
    	}
    }
    Merci de vos lumières et vos conseils.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    essaie avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = '/folder/file[@name]';

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Exact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = '//file[@name="'.$ff.'"]';
    ...
    if ( $nodeList->length )
    Merci

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

Discussions similaires

  1. C# fichier XML changer la valeur d'un attribut
    Par Seth_75 dans le forum C#
    Réponses: 4
    Dernier message: 31/10/2008, 09h51
  2. [Linq to Xml] Récupérer la valeur d'un attribut
    Par teddyalbina dans le forum Linq
    Réponses: 7
    Dernier message: 19/10/2008, 18h26
  3. Trouver un Nb divisible par N valeur
    Par rico63 dans le forum Excel
    Réponses: 3
    Dernier message: 06/02/2008, 14h22
  4. [DOM XML] Récupérer la valeur d'un attribut xml
    Par fast462 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 04/06/2007, 10h16
  5. Réponses: 1
    Dernier message: 02/04/2007, 12h37

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