Bonjour,

J'effectue un portage de PHP4 en PHP5 et je bloque sur les namespaces (je sais, rien d'original...).

Je dois appliquer une transformation sur un sous-arbre et le problème est que la méthode saveXML() me retourne le sous-arbre sous forme de chaine de caractères mais sans les déclarations des namespaces qui y sont utilisés : pas de xmlns:prefix="" !!! En conséquence de quoi, je ne peux pas charger le sous-arbre en tant que document.

En PHP4, la fonction dump_node() avait le même souci mais la fonction add_namespace() me permettait d'ajouter les namespaces que je connais par ailleurs.

Y-a-t'il une autre solution que de partir dans le tripatouillage avec des expressions régulières ???

Merci de vos réponses

Quelques bouts de code...

Sous-arbre retourné par saveXML() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<txs:args><txs:arg><![CDATA[loadsave.txs]]></txs:arg></txs:args>
PHP5 en erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
   $xml = new DOMDocument();
   $xml->loadXML($n->ownerDocument->saveXML($n->firstChild));
PHP4 qui marche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
   $xDoc = $n->owner_document();
   $node = $n->first_child();
   $node->add_namespace("http://sourceforge.net/projects/txs", "txs");
   $xml = $xDoc->dump_node($node);