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] Charger un fichier XML comprenant des espaces de nom


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut [SimpleXML] Charger un fichier XML comprenant des espaces de nom
    Bonjour,

    le nœud racine de mon fichier xml est le suivant :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" standalone="yes"?>
    <SiteConfiguration xmlns:Xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/PortalCfg.xsd">
    . .
    . .
    . .
    . .
     
    </SiteConfiguration>

    tant que je laisse (xmlns:Xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/PortalCfg.xsd"), je n'arrive pas à charger les données de mon fichier xml, quand je l'enlève ça marche.

    voilà mon code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function Load($path)
     {
      return $document=simplexml_load_file($path);  /* ouverture du fichier */
     }
    Merci de votre aide

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    je n'arrive pas à charger les données de mon fichier xml
    Tu peux être un peu plus précis stp ? qu'est-ce qui se passe ? t'as un message d'erreur ? une exception est levée ?

    Est-ce que tu es sûr que ton fichier xml respecte bien le schema ?

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    j'ai pas un message d'erreur,sauf que j'ai une liste que j'alimente avec les données de mon fichier xml,et quand je laisse (xmlns:Xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/PortalCfg.xsd"), ma liste est vide.

    voulez vous me dire comment je peux vérifier le schéma de mon fichier xml?

    Merci de votre aide.

  4. #4
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Pourrait-on obtenir le code en question (simplifié) et un document XML de test complet ?

    voulez vous me dire comment je peux vérifier le schéma de mon fichier xml?
    Que voulez-vous dire ? Parlez-vous de validation ?

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Je vous envoie en pièce jointe le fichier XML de test.
    Mon code Php est le suivant:

    private $path='C:\wamp\www\Test\protected\pages\PortalCfg.xml';
    public function onInit()
    {
    $document=simplexml_load_file($this->path);
    $xpath = '/SiteConfiguration/Tab';
    $keys=$document->xpath($xpath);
    }

    Quand je veux afficher le tableau '$keys' il ne m'affiche rien:
    print_r($keys);//pas de résultat

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Enregistrez l'espace de nom puis utilisez-le dans votre expression XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $document = simplexml_load_file('PortalCfg.xml');
    $document->registerXPathNamespace('default', 'http://tempuri.org/PortalCfg.xsd');
    $keys = $document->xpath('/default:SiteConfiguration/default:Tab');
    print_r($keys);
    Sinon revoyez votre expression XPath (fonction local-name).

    PS : les méthodes getDocNamespaces() et getNamespaces() permettent éventuellement d'obtenir les espaces de nom.

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    voulez vous me dire on quoi sert : 'http://tempuri.org/PortalCfg.xsd' ?

  8. #8
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Ça fait référence à votre espace de nom par défaut :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <SiteConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/PortalCfg.xsd">

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    Bonjour,


    Voilà le code que j'utilise pour modifier un noeud dans mon fichier xml:

    $doc=simplexml_load_file($this->path);
    $valeursTab=$doc->xpath('/default:SiteConfiguration/default:Tab');
    $valeursModules=$doc->xpath('/default:SiteConfiguration/default:ModuleDefinition');
    //cette fonction me retourne un tableau contenant touts les données avec celles modifiées
    $Valeurs=$this->getValuesFromForm($valeursTab,$valeursModules);
    $Valeurs=$doc->asXML();
    // ecriture des donnees dans le fichier
    $handel=fopen($this->path,'w');
    fwrite($handel,$Valeurs);
    fclose($handel);

    aprés validation,je vérifie mon fichier xml,les données sont bien modifiées mais les chaines qui comportent des accents sont mal enregistrées,par exemple:
    'Réinscription' devient 'R&#xE9;inscription'

    avez vous une idée sur ça?
    Merci

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Concernant mon problème,je remplace '<?xml version="1.0" standalone="yes"?>' par '<?xml version="1.0" encoding="UTF-8"?>', mais je veux pas modifier dans mon fichier XML,y a t-il un autre moyen de faire ?

    Merci de votre aide

  11. #11
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    L'extension DOM est capable de gérer un document standalone (propriété, en lecture/écriture, (xmlS|s)tandalone de tout objet DomDocument). En revanche, pour SimpleXML ce n'est visiblement pas le cas

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 97
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Pouvez vous m'expliquer un peu plus car j'ai pas bien saisi .

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/04/2012, 13h53
  2. Réponses: 9
    Dernier message: 27/06/2006, 21h48
  3. [Glade] charger un fichier xml au choix
    Par debutanteVB.NET dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 09/11/2005, 15h03
  4. [JDOM] Charger un fichier.xml
    Par Glutinus dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/08/2005, 15h46

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