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

JavaScript Discussion :

Afficher des informations d'un document xml en fonction du nom inséré dans un champ


Sujet :

JavaScript

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut Afficher des informations d'un document xml en fonction du nom inséré dans un champ
    Bonjour à tous,
    J'ai un petit soucis, j'essaye de faire apparaître le numéro de téléphone contenu dans un fichier xml sur une page web en fonction du nom que l'utilisateur insère dans le champ dédié.
    Le problème c'est que je n'arrive à rien j'ai essayé différentes structures je bloque totalement.( la page s'affiche mais elle me renvoi le nom seulement ou rien du tout)

    Voici le code xml:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <annuaire>
     <individu><nom>Jean</nom><telephone>456-4321</telephone></individu>
     <individu><nom>Pierre</nom><telephone>456-4221</telephone></individu>
     <individu><nom>Jacques</nom><telephone>553-4221</telephone></individu>
     <individu><nom>Marie</nom><telephone>456-4211</telephone></individu>
    </annuaire>

    et voici mon premier essai ou j'ai essayé d'insérer le document xml directement dans un fichier html au sein d'un élément de type script:
    Code html : 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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
      <html>
      <header>
      <script id="telephone" type="application/xml">
      <annuaire>
       <individu><nom>Jean</nom><telephone>456-4321</telephone></individu>
       <individu><nom>Pierre</nom><telephone>456-4221</telephone></individu>
       <individu><nom>Jacques</nom><telephone>553-4221</telephone></individu>
       <individu><nom>Marie</nom><telephone>456-4211</telephone></individu>
      </annuaire>
     
      </script>
      <script>
     
      function chargeXML() {
        var monxml = document.getElementById("telephone").textContent;
        return new DOMParser().parseFromString(monxml, "application/xml");
      }
     
      </script>
      </header>
      <body>
        <form>
    <input type="field" id="champ" />
    <input type="button"
    onclick="alert(document.getElementById('champ').value)" />
    </form>
      </body>
      </html>
    </html>
    J'ai du oublier quelque chose car il me retourne seulement le nom qui a été inséré.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 910
    Points
    44 910
    Par défaut
    Bonjour,
    Pourquoi ne pas mettre tes données dans un <select> par exemple ?

    J'ai un petit soucis, j'essaye de faire apparaître le numéro de téléphone contenu dans un fichier xml sur une page web en fonction du nom que l'utilisateur insère dans le champ dédié.
    est ce que tu sous entend que tu souhaites faire de « l'autocomplétion » ?

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    En fait je voudrais que quand l'utilisateur entre un nom qui est présent dans le code xml , la page web affiche un message avec le nom et le numéro.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 910
    Points
    44 910
    Par défaut
    Il y a plusieurs façons d'arriver au résultat, création d'un objet tye JSON avec les données, insertion du xml dans la page ...(autre)... ou requête Ajax.

    Il serait intéressant que tu nous dises la quantité de données à manipuler, le traitement peut être différent, si des noms peuvent être en double éventuellement, comment sont renseignées les données fichier xml, base de données...

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Il y a plusieurs façons d'arriver au résultat...
    Oui ! Avec le JS d'auhjourd'hui :

    Fichier individu.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <annuaire>
     <individu><nom>Jean</nom><telephone>456-4321</telephone></individu>
     <individu><nom>Pierre</nom><telephone>456-4221</telephone></individu>
     <individu><nom>Jacques</nom><telephone>553-4221</telephone></individu>
     <individu><nom>Marie</nom><telephone>456-4211</telephone></individu>
    </annuaire>

    Fichier
    Code HTML : 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
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="author" content="Daniel Hagnoul">
      <title>Test</title>
      <style>
     
      </style>
      <script>
        'use strict';
        
        const kProcessStatus = r => {
          // thenable, pour fetch()
          if ( r.status === 200 || r.status === 0 ){
            return Promise.resolve( r );
          } else {
            return Promise.reject( new Error( r.statusText ) );
          }
        };
        
        document.addEventListener( 'DOMContentLoaded', ev => {
                
        });
        
        window.addEventListener( 'load', ev => {
          
          // traitement du fichier induvidu.xml et exploitation du résultat
          
          fetch( "individu.xml" )
            .then( r => kProcessStatus( r ) )
            .then( r => r.text() )
            .then( text => {
              let
                arOfObjIndividu = [],
                parser = new DOMParser(),
                xmlDocument = parser.parseFromString( text, "application/xml" );
                
              for( let [ index, elem ] of Array.from( xmlDocument.querySelectorAll( "individu" ) ).entries() ){
                arOfObjIndividu.push(
                  {
                    "nom" : ( elem.children[0].textContent ).trim(),
                    "telephone" : ( elem.children[1].textContent ).trim()
                  }
                );
              }
              
              // debug
              console.log( arOfObjIndividu );
              
              // exploitation de l'array arOfObjIndividu
                
              function telOfNom( nom="Daniel" ){
                for ( let obj of arOfObjIndividu ){
                  if ( nom === obj.nom ) return obj.telephone;
                }
                
                return "inconnu";
              }
              
              console.log( telOfNom() );
              console.log( telOfNom( "Pierre" ) );
     
              
            })
            .catch( er => console.error( er ) );
            
        });
      </script>
    </head>
    <body>
      <main>    
     
     
      </main>
    </body>
    </html>

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 124
    Points : 44 910
    Points
    44 910
    Par défaut
    @daniel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
      "nom" : ( elem.children[0].textContent ).trim(),
      "telephone" : ( elem.children[1].textContent ).trim()
    }
    pas sûr que cette partie fonctionne si le XML est « beautifier » par exemple
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <annuaire>
      <individu>
        <nom>Jean</nom>
        <telephone>456-4321</telephone>
      </individu>
      <individu>
        <nom>Pierre</nom>
        <telephone>456-4221</telephone>
      </individu>
      <individu>
        <nom>Jacques</nom>
        <telephone>553-4221</telephone>
      </individu>
      <individu>
        <nom>Marie</nom>
        <telephone>456-4211</telephone>
      </individu>
    </annuaire>
    [EDIT] Ajout exemple de formatage

Discussions similaires

  1. Afficher des informations dans une ListView
    Par revero275 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/04/2007, 21h58
  2. [c#]comment importer des information d'un document word?
    Par piogo113 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 24/09/2006, 14h02
  3. Afficher des informations de l'ordinateur
    Par christdu13 dans le forum C++
    Réponses: 1
    Dernier message: 31/05/2006, 15h38
  4. Réponses: 2
    Dernier message: 17/05/2006, 15h49
  5. afficher des informations dans un bloc div
    Par francky356 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/11/2005, 15h47

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