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] Accent dans balise XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut [SimpleXML] Accent dans balise XML
    Bonjour,
    je n'arrive pas à recuperer la valeur d'une balise possedant un accent d'un fichier XML :

    voila la balise :
    <Affaire_surface_séjour>33</Affaire_surface_séjour>

    voila comment je recupere sa valeur avec simple XML :
    $affaire->Affaire_surface_séjour

    et sachant que je recupere les valeurs des autres balises sans accent de la sorte.

    Merci de me dire si ya moyen en sachant que je ne peux pas changer le nom de la balise.

    Merci !

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    Avoir des accents dans tes noms de balise est autorisé par les spécifications XML mais reste très périlleux en pratique. En effet il me semble que le processeur XML de MsIE (msxml) n'accepte pas cette écriture.

    L'idéal est de les enlever... après si tu ne peux pas... bah tu te risques à de la non-compatibilité (comme c'est le cas).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    hum .... merci pour ta réponse, mais ca ne m'arrange pas ...
    Ce fichier XML arrive comme ça sur mon serveur.

    L'autre alternative (qui ne m'arrange pas vraiment) est de faire une fonction qui lit le fichier et remplace "<Affaire_surface_séjour>" par "<Affaire_surface_sejour>".

    ... mais bon, le fichier xml est quand même assez balèze et je pensais qu'il existait un moyen de récupérer cette valeur dans une balise avec un accent.

    merci

  4. #4
    Membre expérimenté

    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
    Par défaut
    C'est possible mais il faut utiliser de l'UTF-8 (pour son script) ou alors le faire "sur place" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump((string) $affaire->{utf8_encode('Affaire_surface_séjour')});

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 22
    Par défaut
    merci beaucoup

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Bonjour, je me permets de faire remonter ce post car je rencontre le même problème et je n'arrive pas à le régler.

    Je mets à jour une base de données mysql à partir d'un fichier xml que je reçois quotidiennement et que je ne peux pas modifier. Certaines balises contiennent des accents, et pour ces balises les données ne sont pas inscrites dans la base.
    Pour les autres balises, tout fonctionne.

    Voici comment je récupère mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $varRubrique = utf8_decode($annonce->Caracteristiques->RubriqueMere);
    $varSousRubrique = utf8_decode($annonce->Caracteristiques->Rubrique);
    $varModele = utf8_decode($annonce->Caracteristiques->Modèle);
    N'ayant pas bien compris la solution apportée, j'ai essayé ceci, mais sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $varRubrique = utf8_decode($annonce->Caracteristiques->RubriqueMere);
    $varSousRubrique = utf8_decode($annonce->Caracteristiques->Rubrique);
    $varModele = var_dump((string) $varModele->{utf8_encode($annonce->Caracteristiques->Modèle)});
    ainsi que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $varRubrique = utf8_decode($annonce->Caracteristiques->RubriqueMere);
    $varSousRubrique = utf8_decode($annonce->Caracteristiques->Rubrique);
    var_dump((string) $varModele->{utf8_encode($annonce->Caracteristiques->Modèle)});
    Comment procéder pour faire en sorte que ma variable récupère l'information ?

    Merci d'avance.

  7. #7
    Membre expérimenté

    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
    Par défaut
    Donc le script est en ISO ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $varModele = utf8_decode($annonce->Caracteristiques->{utf8_encode('Modèle')});

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Impeccable, ça fonctionne. Je n'y avais pas pensé de cette manière. Merci.
    Et effectivement, mon entête du script est en <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">, mauvais ?

  9. #9
    Membre expérimenté

    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
    Par défaut
    Ce n'était pas précisé et pour être certain.

    En l'occurrence ici c'est surtout l'encodage même du script qui entre en jeu. Pas celui du document qui est généré puisqu'il s'agit d'un traitement PHP. Ils pourraient tous deux ne pas avoir le même.

    Je suppose que votre serveur est configuré pour ne pas émettre d'entête HTTP indiquant le charset ou est configuré par défaut sur ISO-8859-1 (Apache : directive AddDefaultCharset ; PHP : default_charset). Car, techniquement, côté client, elle prévaudrait sur la balise meta. Donc en cas de conflit entre ces deux-ci, tout client n'interprétera pas la page comme attendu (dépendant de son implémentation).

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

Discussions similaires

  1. [FLASH MX2004] Problème accent dans un XML
    Par cinetryx dans le forum Flash
    Réponses: 10
    Dernier message: 30/05/2007, 00h26
  2. [SimpleXML] Problème avec les accents dans le XML
    Par trotters213 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/12/2006, 10h23
  3. Annuler accents dans balise
    Par jorisvh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/10/2006, 08h48
  4. probléme accents dans rss xml
    Par gator dans le forum Langage
    Réponses: 6
    Dernier message: 25/07/2006, 13h36
  5. [XML][XSL]probleme html dans balise xml
    Par chateau64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/12/2005, 11h42

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