2010-10-14 3 views
0

Je travaille sur la création de documents XML à partir de valeurs dans une base de données. Dans un premier temps, le programme exporte ce XML:Comment puis-je supprimer le texte d'un nœud sans supprimer les nœuds enfants?

<customDataElementlanguage>English</customDataElementlanguage> 

J'ai créé ce PHP pour changer l'arbre XML:

if ($Element->nodeValue = "EN") { $Element->nodeValue = "English"; } 

    $doc2 = $Element->ownerDocument; 
    $titleElement = $doc2->createElement('title','language'); 
    $valueElement = $doc2->createElement('value',$Element->nodeValue); 
    $Element->appendChild($titleElement); 
    $Element->appendChild($valueElement); 
    //$Element->nodeValue=""; 

dans ce:

<customDataElementlanguage> 
English 
<title>language</title> 
<value>English</value> 
</customDataElementlanguage> 

Mon problème est que je peux ne semblent pas trouver un moyen de supprimer le texte "anglais" du nœud sans effacer les nœuds enfants title et value à l'intérieur. Voilà ce qui arrive quand je finis mon code PHP avec $Element->nodeValue="";

Je voudrais aussi changer le nom du noeud customDataElemementlanguage à customDataElement mais je peux travailler que je suppose que plus tard :)

Répondre

1

Eh bien, le plus simple serait être de stocker le nodeValue dans une variable temporaire et mettre à nodeValueavant en créant les autres nœuds.

$lang = $Element->nodeValue; 
$Element->nodeValue = ""; 
$doc2 = $Element->ownerDocument; 
$titleElement = $doc2->createElement('title','language'); 
$valueElement = $doc2->createElement('value', $lang); 
$Element->appendChild($titleElement); 
$Element->appendChild($valueElement); 

Mais vous devez également être en mesure d'éliminer le nœud DOMText via

$Element->removeChild($Element->childNodes->item(0)); 

à la fin.

+0

Merci beaucoup, agréable et simple! Fait ma journée. – Chris

+0

OK maintenant le problème secondaire est devenu un plus grand que je pensais ... renameNode() n'existe pas dans DOM 2 ("pas encore implémenté") donc je vais commencer une autre question avec ça. – Chris

Questions connexes