Envoyé par : Piou2fois
Date : 10/03/2006 15:03
Bonjour Je progresse doucement mais surement dans mon annuaire en xul, simplifié :) Jusqu'à maintenant je récupère un fichier genre cvs, séparé par des ";" et j'insère le tout dans un tree, avec détection des noms des colonnes... en voici le code :
<?xml version="1.0" encoding="ISO-8859-1" ?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window title="Test de lecture d'un fichier" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <script><![CDATA[ function rempli() { var uri = "chemin du fichier"; // ajouter la fonction pour récupérer un fichier var txt = read(uri); //Un peu de cosmétique, affichage du chemin du fichier en bas de la fenêtre document.getElementById('nom_fichier').value = "Fichier : " + uri; } function selection(nb) { var tree = document.getElementById('arbre'); tree.view.selection.select(nb); } function read(filepath) { try { //On autorise le navigateur a ouvrir des fichiers locaux netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { alert("Permission de lire les fichiers refusée"); } //On ouvre le fichier var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(filepath); if ( file.exists() == false ) { alert("Le fichier n'éxiste pas"); } // Ouverture d'un "input stream" sur le fichier var istream =Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); istream.init(file, 0x01, 0444, 0); istream.QueryInterface(Components.interfaces.nsILineInputStream); // lecture des lignes du fichier var line = {}, hasmore; hasmore = istream.readLine(line); var texte=line.value var tableau=texte.split('\;'); nb_colonne=tableau.length-1; var tree = document.getElementById('arbre'); var cols = document.createElement('treecols'); for(i=0;i<nb_colonne;i++){ var col = document.createElement('treecol'); if (tableau[i] == undefined) { tableau[i] = ''; } col.setAttribute('label', tableau[i]); col.setAttribute('flex',1); cols.appendChild(col); splitter=document.createElement('splitter'); cols.appendChild(splitter); } tree.appendChild(cols); var children = document.createElement('treechildren'); // assigne un élément treechildren à la variable children do { hasmore = istream.readLine(line); var texte=line.value var tableau=texte.split('\;'); var item = document.createElement('treeitem'); var row = document.createElement('treerow'); for(i=0;i<nb_colonne;i++){ var cells = document.createElement('treecell'); if (tableau[i] == undefined) { tableau[i] = ''; } cells.setAttribute('label', tableau[i]); row.appendChild(cells); } item.appendChild(row); children.appendChild(item); } while(hasmore); tree.appendChild(children); istream.close(); } ]]></script> <hbox> <textbox onkeyup="selection(this.value);" id="search" /> <button label="Go" oncommand="rempli();" width="100px"/> </hbox> <hbox style = "overflow: auto;" flex="1"> <tree style="font-size:0.8em" id="arbre" flex="1"> </tree> </hbox> <label value="..." id="nom_fichier"/> </window>
Vous remarquerez que j'ai pris des bouts de code un peu partout sur le net avant de l'adapter pour mes besoins.
Permière question : qu'en pensez vous pour le moment ?
Seconde question : j'aimerai en fait proposer de récupérer les infos d'un fichier cvs (tabulé, ou séparé par ";" etc.) et le mettre sous la forme d'un fichier RDF. Comment m'y prendre ?
Les prochaines étapes :
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.