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 :

[SimpleXML] Modifier le champ d'un simplexml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 34
    Points
    34
    Par défaut [SimpleXML] Modifier le champ d'un simplexml
    Bonjour,
    J'espère être dans la bonne partie du fofo

    Après 4h de recherche infructueuse sous google ,

    Bon voila : j'aimerai modifier le champ d'un objet simplexml (pas un de ses attributs)

    un exemple vos mieux qu'un long discourt
    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
     
    $string ='<?xml version="1.0"?><document>
    <textarea name="area1">1</textarea>
    <textarea name="area2">2</textarea>
    </document>';
     
    $sXMLelt = simplexml_load_string($string);
     
    foreach($sXMLelt as $key=>$elt)
    {
    	switch(strval($key))
    	{
    		case "textarea" :
    			if(strval($elt->name)="area1")
    				$elt->affecteValeur("area1 modifié");
    			if(strval($elt->name)="area2")
    				$elt->affecteValeur("area2 modifié");
    			break;
    		//.....
    	}
    }
     
    echo $sXMLelt->asXML();
    mais hélas je ne connait pas le vrai nom de la dîte fonction affecteValeur, ni la syntaxe

    Merci d'avance

  2. #2
    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 778
    Points
    17 778
    Par défaut
    De manière générale l'extension SimpleXML n'est pas la plus adaptée pour apporter des modifications à son document XML et la version de PHP (5) entre également en ligne de compte. Toutefois ici un simple : $elt = 'area1 modifié'; semble fonctionner (testé sur 5.2.3) ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 34
    Points
    34
    Par défaut
    Merci j'y avais pensais mais ... J'ai la version PHP 5.2.0 (EasyPHP 2.0 beta 1)

    et ça écrase la variable $elt par un string ...

    je vais de ce pas regarder pour avoir la version 5.2.3 ^^

    mais si vous avez une autre méthode je suis preneur

  4. #4
    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 778
    Points
    17 778
    Par défaut
    Citation Envoyé par konkin
    mais si vous avez une autre méthode je suis preneur
    DOM Si j'ai bien compris vous pourriez faire la même chose ainsi :
    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
    $dom = DomDocument::loadXML($string);
     
    foreach ($dom->documentElement->childNodes as $elt)
    {
    	switch ($elt->nodeName) 
    	{
    		case 'textarea':
    			if ($elt->getAttribute('name') == 'area1')
    				$elt->nodeValue = utf8_encode('area1 modifié');
    			if ($elt->getAttribute('name') == 'area2')
    				$elt->nodeValue = utf8_encode('area1 modifié');
    			break;
    		//.....
    	}
    }
     
    echo $dom->saveXML();
    Par contre j'ai déjà vu plus simple dans l'utilisation de SimpleXML :
    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
    $sXMLelt = simplexml_load_string($string);
     
    foreach ($sXMLelt as $elt)
    {
    	switch ($elt->getName())
    	{
    		case 'textarea':
    			if ($elt['name'] == 'area1')
    				$elt[0] = utf8_encode('area1 modifié');
    			if ($elt['name'] == 'area2')
    				$elt[0] = utf8_encode('area2 modifié');
    			break;
    		//.....
    	}
    }
     
    echo $sXMLelt->asXML();
    (des tests au niveau des attributs s'imposent certainement)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 34
    Points
    34
    Par défaut
    pour
    $elt = 'area1 modifié';
    je viens de récupérer la dernier version de PHP (5.2.4)

    Et hélas ça me fais la même chose ...

    donc pas encore résolu

    Je vous dit bonne nuit et à bientôt j'espère

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Points : 34
    Points
    34
    Par défaut
    Merci julp

    $elt[0] =utf8_encode('area1 modifié');
    Ca marche parfaitement cool

    Ca buguer dans la version 5.2.0 ^^ d'ailleurs

    tu es un

    @+ merci pour tout

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

Discussions similaires

  1. Modifier deux champs en même temps!!!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 08/09/2005, 20h31
  2. [Zope] modifier un champ de formulaire d´un dtml_doc
    Par naiadeKaren dans le forum Zope
    Réponses: 1
    Dernier message: 17/08/2005, 13h31
  3. [EJB2.1 Entity] [CMP] Modifier un champ d'une clé primaire
    Par Medo_free dans le forum Java EE
    Réponses: 4
    Dernier message: 14/03/2005, 18h04
  4. Modifier un champ à partir d'une fenêtre modale
    Par ahoyeau dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/03/2005, 16h53
  5. [struts] : modifier un champ en javascript
    Par richard_34b dans le forum Struts 1
    Réponses: 3
    Dernier message: 02/10/2004, 00h42

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