2009-12-03 8 views
0

Cela fait partie du XML que je veux modifierphp élément XML d'édition

<ScrapBook> 
    <Event> 
    <Name> Name of Event <Name> 
    <Other Elements> 
    </Event> 
<ScrapBook> 

Je dois modifier le nom de l'événement.

Je peux supprimer le noeud en utilisant remove_child. Mais je ne sais pas comment ajouter un autre élément au même endroit.

Ceci est mon code:

public function editEventName($oldEventName, $newEventName){ 
     $xmlDoc = new DOMDocument(); 
     $xmlDoc->load($this->xmlFileName); 
     $events = $xmlDoc->getElementsByTagName("Event"); 
     foreach($events as $event){ 
      $eventNames = $event->getElementsByTagName("Name"); 
      $eventN = $eventNames->item(0)->nodeValue; 
      if($oldEventName == $eventN){ 
       $nud = $eventNames->item(0)->parentNode; 
       $nud->removeChild($eventNames->item(0)); 

       // set name to $newEventName 
      } 
      $xmlDoc->saveXML(); 
    $xmlDoc->save($this->xmlFileName); 
     } 

Répondre

0

Une solution, si je comprends bien la question, peut-être juste remplacer la valeur de $eventNames->item(0)->nodeValue, sans essayer de supprimer le nœud et ajouter un nouveau.

Par exemple, en utilisant votre code, et modifier un peu pour que cela fonctionne pour ce cas simple:

$str = <<<XML 
<ScrapBook> 
    <Event> 
    <Name> Name of Event </Name> 
    <Blah>glop glop</Blah> 
    </Event> 
</ScrapBook> 
XML; 

$xmlDoc = new DOMDocument(); 
$xmlDoc->loadXml($str); 
$events = $xmlDoc->getElementsByTagName("Event"); 
foreach($events as $event){ 
    $eventNames = $event->getElementsByTagName("Name"); 
    $eventN = $eventNames->item(0)->nodeValue; 
    if(' Name of Event ' == $eventN){ 
     $eventNames->item(0)->nodeValue = 'New name'; 
    } 
} 
var_dump($xmlDoc->saveXML()); 

me faire:

string '<?xml version="1.0"?> 
<ScrapBook> 
    <Event> 
    <Name>New name</Name> 
    <Blah>glop glop</Blah> 
    </Event> 
</ScrapBook> 
' (length=119) 

Et la valeur du Name du Event a été remplacé par "New name".

+0

Merci beaucoup !! Je savais que c'était possible – Milee

+0

Vous êtes les bienvenus :-) Amusez-vous! –