Ressources Libs/read Document

Lecture d'un document DOM

Voici un exemple simple d'un script permettant de lire un document XML ou DOM depuis une adresse chrome://, http://, ou relative par rapport à l'application elle même.

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 document"
         xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         >

 <script><![CDATA[
 function lecture(url) {
   //url : adresse chrome:// ou http://, absolue ou relative
    var baseurl= window.location.toString();
    var uri = Components.classes['@mozilla.org/network/standard-url;1']
             .createInstance(Components.interfaces.nsIURI);
    uri.spec=baseurl;
    //Résolution de l'URL du fichier par rapport à l'URL de la fenêtre de l'application
    var strUrlFichier = uri.resolve(url);
    uri.spec=strUrlFichier;
    //Ouvrir un canal correspondant à cette URL
    var ios = Components.classes['@mozilla.org/network/io-service;1']
             .getService(Components.interfaces.nsIIOService);
    var chann = ios.newChannelFromURI ( uri );
    //Charger le document depuis ce canal
    var domsrv = Components.classes['@mozilla.org/content/syncload-dom-service;1']
                .getService(Components.interfaces.nsISyncLoadDOMService);
    var doc = domsrv.loadDocumentAsXML( chann , uri);
    //doc est un objet XMLDocument
    return doc;
 }

 function rempli() {
  //lance la lecture avec l'URI de la <textbox>
  var doc = lecture( document.getElementById('nom_fichier').value );
  //Récupère un contenu "affichable"
  txt = doc.documentElement.textContent;
  //Affichage du contenu en échappant les caractères xml
  txt = txt.replace(/&/g, '&amp;');
  txt = txt.replace(/</g, '&lt;');
  txt = txt.replace(/>/g, '&gt;');
  document.getElementById('contenu').innerHTML = txt;
 }

 //Propose par défaut l'adresse du document en cours (pour l'exemple)
 window.addEventListener('load',
                         function() {document.getElementById('nom_fichier').value=window.location;},
                         true);
 ]]></script>

 <html:h1>Test de lecture d'un document</html:h1>
 <hbox style="overflow: auto;" flex="1">
   <html:pre id="contenu">...</html:pre>
 </hbox>
 <hbox>
   <textbox value="..." id="nom_fichier" flex="1"/>
   <button label="Lecture" oncommand="rempli();"/>
 </hbox>
 </window>

Explications

La fonction lecture() permet ici de lire un document XML sous la forme d'un objet XMLDocument exploitable par un script.

Nota bene

L'affichage du document qui est fait ici dans des balises HTML ne sert qu'à montrer rapidement un résultat, mais n'a aucune utilité pour l'exemple proposé.


Commentaires

DamienHardy: Il semble que le problèmes persistent quant à la lecture des fichiers XML contenant des entitées externes (tel que httple backend de la tribune de DLFP par exemple)

Dernière modification le avril 29, 2006 12:22 .


Le contenu de cette page est disponible selon certaines conditions de réutilisation. Lire aussi la page des 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.