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 :

[DOM] saveXML et les namespaces


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut [DOM] saveXML et les namespaces
    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);

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Et voilà !

    Il suffit de rajouter le xmlns:prefix comme un vulgaire attribut ! (N'est-ce pas un peu "cavalier" ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       $xml = new DOMDocument();
       $nstxs = $n->ownerDocument->createAttribute("xmlns:txs");
       $nstxs->appendChild($n->ownerDocument->createTextNode("http://sourceforge.net/projects/txs"));
       $n->firstChild->appendChild($nstxs);
       $xml->loadXML($n->ownerDocument->saveXML($n->firstChild));
    La méthode saveXML de PHP5 n'est pas encore au niveau de la propriété innerXML de .Net...

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

Discussions similaires

  1. [DOM] Problème avec les namespaces
    Par clincks dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/06/2006, 20h40
  2. [VB.NET] Ou importer les namespaces com System.data.. ?
    Par beegees dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2006, 11h06
  3. [.Net] Probleme avec les namespace
    Par ksoft dans le forum MFC
    Réponses: 3
    Dernier message: 07/06/2006, 17h23
  4. [DOM Javascript]Récupérer les attributs
    Par gabychon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2006, 15h21
  5. Les namespace sont nos amis....
    Par oldfox dans le forum C++
    Réponses: 16
    Dernier message: 23/03/2006, 19h37

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