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 :

Charger un tableau XML dans HTML


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Particulier
    Inscrit en
    Janvier 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Janvier 2013
    Messages : 80
    Par défaut Charger un tableau XML dans HTML
    Bonjour, bonsoir !

    Voilà, j'ai deux fichiers XML qui contiennent chacun un catalogue de CD, comme ceci :
    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"?>
    <CATALOG>
    	<CD>
    		<TITLE>--</TITLE>
    		<ARTIST>--</ARTIST>
    		<COUNTRY>--</COUNTRY>
    		<COMPANY>--</COMPANY>
    		<PRICE>--</PRICE>
    		<YEAR>--</YEAR>
    	</CD>
    	<CD>
    		<TITLE>--</TITLE>
    		<ARTIST>--</ARTIST>
    		<COUNTRY>--</COUNTRY>
    		<COMPANY>--</COMPANY>
    		<PRICE>--</PRICE>
    		<YEAR>--</YEAR>
    	</CD>
    </CATALOG>
    Je précise que ces deux fichiers n'ont pas le même nombre de CD.

    Dans une page HTML, je veux pouvoir faire apparaître ces deux catalogues, à l'aide d'une liste déroulante. Voilà ce que j'ai dans ce fichier HTML :
    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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
     
    <form name="formulaire">
    	<select name="select">
    		<option value="cd_catalog.xml">Catalogue 1</option>
    		<option value="cd_catalog2.xml">Catalogue 2</option>
    	</select>
    	<input type="button" value="Regarder" onclick="verification()" />
    	<input type="text" name="result" />
    </form>
     
    <script>        
            function verification()
            {
                    formulaire.result.value = formulaire.select.value;
            
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET",formulaire.result.value,false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML; 
     
    document.write("<table border='1'>");
    var x=xmlDoc.getElementsByTagName("CD");
    for (i=0;i<x.length;i++)
      { 
      document.write("<tr><td>");
      document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
      document.write("</td><td>");
      document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
      document.write("</td></tr>");
      }
    document.write("</table>");
     
    }
    </script>
     
    </body>
    </html>

    Alors, ça marche, mais le problème, c'est que ça efface la page quand je charge le tableau.
    Est ce qu'il y a moyen de contourner le problème ?

    Je vous remercie !

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    c'est quoi ça ?
    A+JYT

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    Est ce qu'il y a moyen de contourner le problème ?
    OUI et pour commencer ne pas utiliser document.write dont tu connais l'effet.

    Il existe les méthodes de construction du DOM tel que createElement, createNodeText, appendChild, insertRow ou autre insertCell.

  4. #4
    Membre confirmé
    Homme Profil pro
    Particulier
    Inscrit en
    Janvier 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Janvier 2013
    Messages : 80
    Par défaut
    Il existe les méthodes de construction du DOM tel que createElement, createNodeText, appendChild, insertRow ou autre insertCell.
    Laquelle serai la plus approprié, et comment l'utiliser ?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Comme tu traites des données tabulaire je dirais à priori toutes .
    exemple simple
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Création TABLE</title>
    <style>
    table td{
      border:1px solid red;
    }
    </style>
    </head>
    <body>
    <div id="destination"></div>
    <script>
    // endroit on l'on va ajouter la TABLE
    var oDest = document.getElementById('destination');
    // Eléments manipulés
    var oText, oCell, oRow, oTable = document.createElement('TABLE');
    var i, nb = 10;
    for (i=0; i <nb; i++){
      oRow  = oTable.insertRow();
      oCell = oRow.insertCell();
      oText = document.createTextNode( i);
      oCell.appendChild( oText);
    }
    // ajout TABLE créée
    oDest.appendChild( oTable);
    </script>
    </body>
    </html>

  6. #6
    Membre confirmé
    Homme Profil pro
    Particulier
    Inscrit en
    Janvier 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Particulier

    Informations forums :
    Inscription : Janvier 2013
    Messages : 80
    Par défaut
    Je te remercie !

    Mais, comment puis-je insérer deuxième colonne ?
    [EDIT] J'ai un autre problème. Sans ajouter de deuxième colonne, mon code est :
    Code HTML et JS : 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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title>Création TABLE</title>
    <style>
    table td{
      border:1px solid red;
    }
    </style>
    </head>
    <body>
     
     
    <form name="formulaire">
    	<select name="select">
    		<option value="cd_catalog">Catalogue 1</option>
    		<option value="cd_catalog2">Catalogue 2</option>
    	</select>
    	<input type="button" value="Regarder" onclick="verification()" />
    	<input type="text" name="result" />
    </form>
     
     
    <div id="destination"></div>
     
     
    <script>
    function verification()
    	{
    		formulaire.result.value = formulaire.select.value+".xml";
     
    	if (window.XMLHttpRequest)
    	{// code for IE7+, Firefox, Chrome, Opera, Safari
    	xmlhttp=new XMLHttpRequest();
    	}
    	else
    	{// code for IE6, IE5
    	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	xmlhttp.open("GET",formulaire.result.value,false);
    	xmlhttp.send();
    	xmlDoc=xmlhttp.responseXML; 
     
     
    	// endroit on l'on va ajouter la TABLE
    	var oDest = document.getElementById('destination');
    	// Eléments manipulés
    	var oText, oCell, oRow, oTable = document.createElement('TABLE');
    	var x=xmlDoc.getElementsByTagName("CD");
    	for (i=0;i<x.length;i++) {
    	oRow  = oTable.insertRow();
    	oCell = oRow.insertCell();
    	oText = document.createTextNode("n°"+i+" "+x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
     
    	oCell.appendChild( oText);
    	}
    	// ajout TABLE créée
    	oDest.appendChild( oTable);
    }
     
    </script>
    </body>
    </html>

    Ca marche bien. Mais quand on change de catalogue avec le select, le tableau se "colle" en dessous du premier, alors que j'aimerai qu'il le remplace.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/07/2007, 17h13
  2. [debutant]charger un tableau *.xls dans VB6
    Par styliebeuf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/11/2006, 11h48
  3. Réponses: 2
    Dernier message: 28/09/2006, 09h48
  4. Réponses: 9
    Dernier message: 27/06/2006, 21h48
  5. intégration XML dans HTML
    Par jem27 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 15/06/2006, 15h58

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