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] Problème avec des balises xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 34
    Points
    34
    Par défaut [SimpleXML] Problème avec des balises xml
    bonjour j'ai un problème pour importer des données xml grâce a simplexml php me dit que l'erreur vient de ":"
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php 
    if (file_exists('test.html'))
    {
    $dsml = simplexml_load_file('test.xml');
    $ds= $dsml->dsml:dsml ;
    $d=$ds->dsmldirectory-entries;
    foreach($d->dsml:entry  as $entry)
    {
    echo $entry->dsml:attr name="nomUsuel"->dsml:value;
    
    }
    }
    
    ?>
    extrait du xml:
    <dsml:dsml xmlns:dsml="xmlns:dsml=http://www.dsml.org/DSML">
      <dsml:directory-entries>
        <dsml:entry dn="uid=000315, ou=Agents, o=AG10G, c=fr">
          <dsml:objectclass>
            <dsml:oc-value>inetOrgPerson</dsml:oc-value>
            <dsml:oc-value>organizationPerson</dsml:oc-value>
            <dsml:oc-value>person</dsml:oc-value>
            <dsml:oc-value>Agent</dsml:oc-value>
            <dsml:oc-value>top</dsml:oc-value>
          </dsml:objectclass>
          <dsml:attr name="codhop">
            <dsml:value>081</dsml:value>
          </dsml:attr>
          <dsml:attr name="coddif">
            <dsml:value>10</dsml:value>
          </dsml:attr>
          <dsml:attr name="matricule">
            <dsml:value>000315</dsml:value>
          </dsml:attr>
          <dsml:attr name="entree">
            <dsml:value>2006-10-01</dsml:value>
          </dsml:attr>
          <dsml:attr name="civilite">
            <dsml:value>Mademoiselle</dsml:value>
          </dsml:attr>
          <dsml:attr name="nomUsuel">
            <dsml:value>NOM2-000313</dsml:value>
          </dsml:attr>
          <dsml:attr name="nomPatronymique">
    	          <dsml:value>NOJF2-000313</dsml:value>
          </dsml:attr>
          <dsml:attr name="nomMarital">
            <dsml:value>NOMM2-000313</dsml:value>
          </dsml:attr>
          <dsml:attr name="prenom">
            <dsml:value>PRENOM2-000313</dsml:value>
          </dsml:attr>
            </dsml:directory-entries>
    </dsml:dsml>

    j'aimerais pouvoir extraire tous les <dsml:attr> avec leurs valeurs et les placer dans un tableau mais je pense que le problème viens des balises mais je n'en suis pas sur si quelqu'un pouvait m'aider

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 097
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 097
    Points : 8 206
    Points
    8 206
    Billets dans le blog
    17
    Par défaut
    Avec SimpleXML il faut passer par SimpleXMLElement::children( ) quand il y a des espaces de noms.
    http://fr.php.net/manual/fr/simplexm...t.children.php

    PS : manque un </dsml:entry> dans ton exemple.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 34
    Points
    34
    Par défaut
    merci Séb. pour cette réponse rapide mais j'ai un peu de mal a comprendre l'exemple disponible avec ton lien. Il faut que j'utilise simpleXMLElement::children( ) pour toutes mes balises? Car le fichier xml que j'ai a traduire est super long et ne contient que des balises composées comme celle de l'exemple.
    si quelqu'un avait un exemple avec mes balises sa m'aiderait beaucoup

    ps: merci pour le </dsml:entry> mauvais copier coller

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 097
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 097
    Points : 8 206
    Points
    8 206
    Billets dans le blog
    17
    Par défaut
    Non non, le cas échéant tu veux travailler sur des éléments d'un certain espèce de nom, tu as juste, en qque sorte, à charger le XML de cet espace de nom.

    Je te file un exemple...

    dsml.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?xml version="1.0"?>
    <dsml:dsml xmlns:dsml="xmlns:dsml=http://www.dsml.org/DSML">
        <dsml:directory-entries>
            <dsml:entry dn="uid=000315, ou=Agents, o=AG10G, c=fr">
                <dsml:objectclass>
                    <dsml:oc-value>inetOrgPerson</dsml:oc-value>
                    <dsml:oc-value>organizationPerson</dsml:oc-value>
                    <dsml:oc-value>person</dsml:oc-value>
                    <dsml:oc-value>Agent</dsml:oc-value>
                    <dsml:oc-value>top</dsml:oc-value>
                </dsml:objectclass>
                <dsml:attr name="codhop">
                    <dsml:value>081</dsml:value>
                </dsml:attr>
                <dsml:attr name="coddif">
                    <dsml:value>10</dsml:value>
                </dsml:attr>
                <dsml:attr name="matricule">
                    <dsml:value>000315</dsml:value>
                </dsml:attr>
                <dsml:attr name="entree">
                    <dsml:value>2006-10-01</dsml:value>
                </dsml:attr>
                <dsml:attr name="civilite">
                    <dsml:value>Mademoiselle</dsml:value>
                </dsml:attr>
                <dsml:attr name="nomUsuel">
                    <dsml:value>NOM2-000313</dsml:value>
                </dsml:attr>
                <dsml:attr name="nomPatronymique">
                    <dsml:value>NOJF2-000313</dsml:value>
                </dsml:attr>
                <dsml:attr name="nomMarital">
                    <dsml:value>NOMM2-000313</dsml:value>
                </dsml:attr>
                <dsml:attr name="prenom">
                    <dsml:value>PRENOM2-000313</dsml:value>
                </dsml:attr>
            </dsml:entry>
        </dsml:directory-entries>
    </dsml:dsml>
    index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    $xml = simplexml_load_file('dsml.xml') ;
    $children = $xml->children('xmlns:dsml=http://www.dsml.org/DSML') ;
     
    header('Content-Type: text/plain') ;
    print_r($children) ;
    On obtient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    SimpleXMLElement Object
    (
        [directory-entries] => SimpleXMLElement Object
            (
                [entry] => SimpleXMLElement Object
                    (
                        [objectclass] => SimpleXMLElement Object
                            (
                                [oc-value] => Array
                                    (
                                        [0] => inetOrgPerson
                                        [1] => organizationPerson
                                        [2] => person
                                        [3] => Agent
                                        [4] => top
                                    )
     
                            )
     
                        [attr] => Array
                            (
                                [0] => SimpleXMLElement Object
                                    (
                                        [value] => 081
                                    )
     
                                [1] => SimpleXMLElement Object
                                    (
                                        [value] => 10
                                    )
     
                                [2] => SimpleXMLElement Object
                                    (
                                        [value] => 000315
                                    )
     
                                [3] => SimpleXMLElement Object
                                    (
                                        [value] => 2006-10-01
                                    )
     
                                [4] => SimpleXMLElement Object
                                    (
                                        [value] => Mademoiselle
                                    )
     
                                [5] => SimpleXMLElement Object
                                    (
                                        [value] => NOM2-000313
                                    )
     
                                [6] => SimpleXMLElement Object
                                    (
                                        [value] => NOJF2-000313
                                    )
     
                                [7] => SimpleXMLElement Object
                                    (
                                        [value] => NOMM2-000313
                                    )
     
                                [8] => SimpleXMLElement Object
                                    (
                                        [value] => PRENOM2-000313
                                    )
     
                            )
     
                    )
     
            )
     
    )
    Ex. pour accéder à la valeur du 1er <attr> :

    echo $children->{'directory-entries'}->entry->attr[0]->value ;

    Etc.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 18
    Points : 34
    Points
    34
    Par défaut
    merci c'est bon sa marche .

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/03/2011, 21h53
  2. Problème de recherche dans des balises XML
    Par mbhfr06 dans le forum Langage
    Réponses: 2
    Dernier message: 26/08/2007, 11h26
  3. [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
  4. [XHTML] Problème avec des balise de type block
    Par kei-kun41 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/06/2006, 13h55
  5. problème avec des couches de balises div
    Par pierre68314 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/03/2006, 16h45

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