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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    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
    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
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    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
    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 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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    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