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] lecture d'un fichier xml


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut [DOM] lecture d'un fichier xml
    Bonjour,
    j'ai un fichier xml avec la structure suivant, que je n'arrive pas a lire les champs de différentes balises
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <mysql>
      <database name="personnes">
        <table>
         <fiche>
            <var name="id">1380</var>
            <var name="nom">Clark</var>
            <var name="prenom">Jon</var>
            <var name="statut">Stud</var>
            <var name="formation">ing.,M.Sc.A.</var>
            <var name="ancien">false</var>
            <var name="Login">P234</var>
            <var name="pageWebPerso" generation="auto">http://www.web.com/p234</var>
            <var name="photo">none</var>
            <var name="distinctions" generation="auto"></var>
            <var name="implicationprojet">
              <projet>project1</projet>
              <projet>project2</projet>
              <projet>project3</projet>
              <projet>project4</projet>
            </var>
            <var name="tel"></var>
            <var name="local"></var>
            <var name="courriel">hooyu@yahoo.com</var>
            <var name="implicationlabo">
              <laboratoire>lab1</laboratoire>
              <laboratoire>lab2</laboratoire>
              <laboratoire>lab3</laboratoire>
              <laboratoire>lab4</laboratoire>
            </var>
          </fiche>
        </table>
      </database>
    </mysql>
    ce que je veux c'est pouvoir récupérer le nom et les projets
    c-a-d: pouvoir lister
    Jon Clark
    project1, project2, project3...
    j'ai écrit ce bout de code mais ça ne marche pas je sais pas comment remédier à ce problème
    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
    <?php 
    function getVarByName($fiche, $name)
    {
        $xpath = new DOMXPath($fiche->ownerDocument);
        $res = $xpath->query(sprintf($name), $fiche);
        if (!$res or $res->length == 1) {
            return $res->item(0)->nodeValue;
        } else {
            return FALSE;
        }
    }
     
    $fichier_xml = 'personnes.xml';
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load($fichier_xml);
     
     
    $i=0;
    foreach ($dom->getElementsByTagName('fiche') as $fiche)
            {
     $var1=utf8_decode(getVarByName($fiche->var[@name='nom']));
     $var3=utf8_decode(getVarByName($fiche->var[@name='prenom']));
            echo'nom et prenom'.$var1.$var3;
     
         $var2=utf8_decode(getVarByName($fiche->var[@name='projet']));
            echo'projets'.$var2;
     
     
            }
    ?>
    merci pour votre aide

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 406
    Par défaut
    Salut,
    "ça ne marche pas?" : C'est quoi le message d'erreur affiché? Version PHP?

  3. #3
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Est-ce que tu vois le nom et prenom au moins?

    Maintenant pour les projets le nom de la var est "implicationprojet" et non "projet", de plus les projets sont listes chacun dans un champ. Utilise une boucle, et item comme tu a fait dans $res->item(0).

    Note: la variable $i n'est pas utilisee nulle part.

  4. #4
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut nom et prenom ??
    Citation Envoyé par bredelet Voir le message
    Est-ce que tu vois le nom et prenom au moins?

    Maintenant pour les projets le nom de la var est "implicationprojet" et non "projet", de plus les projets sont listes chacun dans un champ. Utilise une boucle, et item comme tu a fait dans $res->item(0).

    Note: la variable $i n'est pas utilisee nulle part.

    Non je vois pas le nom et le prenom, pour les projets c'est ok
    voici le 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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="shortcut icon" type="image/x-icon" href="../locked.png" />
    <title>parese du xml</title>
    </head>
     
    <body>
    <html>
     
    <?php 
     
    function getFicheById($dom, $id)
    {
        $xpath = new DOMXPath($dom);
    $res = $xpath->query(sprintf('//fiche[var[@name = "id"]/text() = "%d"]',$id));
        if ($res->length == 1) {
            return $res->item(0);
        } else { return FALSE;}
    }
     
    function getVarByName($fiche, $name)
    {
        $xpath = new DOMXPath($fiche->ownerDocument);
        $res = $xpath->query(sprintf($name), $fiche);
        if (!$res or $res->length == 1) {
            return $res->item(0)->nodeValue;
        } else { return FALSE;}
    }
     
    function imp($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "implicationprojet"]/projet', $fiche);
    }
     
    function format_implicationprojet($str) 
    { return str_replace('/', '<br />', $str);}
     
    $fichier_xml = 'personnes.xml';
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load($fichier_xml);
     
     foreach ($dom->getElementsByTagName('fiche') as $fiche)
    {
    $id = getVarByName($fiche,'id');
    $nom = stripslashes(getVarByName($fiche,'nom'));
    $prenom = stripslashes(getVarByName($fiche,'prenom'));
    }
    echo'id'.$id.'<br/>';
    echo'nom'.$nom.'<br/>';
    echo'pren'.$prenom.'<br/>';
     
     
    foreach ($dom->getElementsByTagName('fiche') as $fiche)
    {
     
    	$impl = imp($fiche);
            $projj='';
            for($i=0;$i<$impl->length;$i++)
            {
                $projj=$projj."\n".stripslashes($impl->item($i)->nodeValue) ;
    		echo"Les projets : ".$projj.'<br/>';}
            }
    }
    ?>
    </body>
    </html>
    avec ce code j'arrive pas a afficher le nom et le prenom

  5. #5
    Membre actif
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut
    en fin j'ai arrivé a résoudre mon problème voici le bout du code que j'ai fait, j'espère que cela vous aidera
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="shortcut icon" type="image/x-icon" href="../locked.png" />
    <title>parese du xml</title>
     
    </head>
     
    <body>
    <html>
    <?php 
     
    function getFicheById($dom, $id)
    {
        $xpath = new DOMXPath($dom);
        $res = $xpath->query(sprintf('//fiche[var[@name = "id"]/text() = "%d"]', $id));
        if ($res->length == 1) {
            return $res->item(0);
        } else { return FALSE;}
    }
     
    function getVarByName($fiche, $name)
    {
        $xpath = new DOMXPath($fiche->ownerDocument);
        $res = $xpath->query(sprintf($name), $fiche);
        if (!$res or $res->length == 1) {
            return $res->item(0)->nodeValue;
        } else { return FALSE;}
    }
     
    function imp($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "implicationprojet"]/projet', $fiche);
    }
     
    function format_implicationprojet($str) 
    { return str_replace('/', '<br />', $str);}
     
    function nombre($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "nom"]', $fiche);
    }
    function prenom($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "prenom"]', $fiche);
    }
     
    function login($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "Login"]', $fiche);
    }
    function web($fiche)
    {
            $xpath = new DOMXPath($fiche->ownerDocument);
            return $xpath->query('var[@name = "pageWebPerso"]', $fiche);           
    }
     
    $fichier_xml = 'personnes.xml';
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load($fichier_xml);
     
    $proyecto='SECURP';
     
    foreach ($dom->getElementsByTagName('fiche') as $fiche)
    {
    	$inom = nombre($fiche);
            $inombre='';
     
            $iprenom = prenom($fiche);
            $iprenom1='';
     
    	$impl = imp($fiche);
            $projj='';
     
            $iweb = web($fiche);
            $iweb1 ='';
     
           for($i=0;$i<$impl->length;$i++)
          {
                $projj=$projj."\n".stripslashes($impl->item($i)->nodeValue) ;
    		$inombre=$inombre."\n".($inom->item($i)->nodeValue) ;
                    $iprenom1=$iprenom1."\n".($iprenom->item($i)->nodeValue) ;
    		$iweb1=$iweb1."\n".($iweb->item($i)->nodeValue);
    		echo"<a href=".$iweb1.">$inombre $iprenom1</a>";
    		echo $kprojj.'<br/>';
            }
     
    }
    ?>
    </body>
    </html>
    JE TIENS A SIGNALER QUE CE SCRIPT MARCHE AVEC LES FICHIERS XML AYANT LA STRUCTURE INDIQUéE EN HAUT
    bon chance.

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

Discussions similaires

  1. [DOM] Lecture d'un fichier xml
    Par pas30 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 08/07/2017, 13h49
  2. Exemple de lecture d'un fichier XML avec DOM
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 18h48
  3. [DOM XML] Message d'erreur à la lecture d'un fichier XML en PHP4
    Par Flushovsky dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 01/12/2008, 19h22
  4. [DOM] Lecture d'un fichier XML en url en PHP
    Par diakite4 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 21/05/2008, 16h31

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