Loads a XML file and permits to access to the data it contains : XML « Development « JavaScript DHTML

JavaScript DHTML
1. Ajax Layer
2. Data Type
3. Date Time
4. Development
5. Document
6. Dojo toolkit
7. Event
8. Event onMethod
9. Ext JS
10. Form Control
11. GUI Components
12. HTML
13. Javascript Collections
14. Javascript Objects
15. Javascript Properties
16. jQuery
17. Language Basics
18. Mochkit
19. Mootools
20. Node Operation
21. Object Oriented
22. Page Components
23. Rico
24. Scriptaculous
25. Security
26. SmartClient
27. Style Layout
28. Table
29. Utilities
30. Window Browser
31. YUI Library
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
JavaScript DHTML » Development » XML 
Loads a XML file and permits to access to the data it contains

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>

  <HEAD>
    <TITLE>JsLib 1.3 - Exemple - xml.js</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <META NAME="Author" CONTENT="Etienne CHEVILLARD">
    
    <!-- xml.js -->
    <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript">
/* xml.js
 * Role : charge un fichier XML et permet d'acceder aux donnees qu'il contient
 * Projet : JsLib
 * Auteur : Etienne CHEVILLARD (echevillard@users.sourceforge.net)
 * Version : 1.3
 * Creation : 20/08/2004
 * Mise a jour : 23/02/2005
 * Bogues connues : - Opera 7 ignore les commentaires du fichier XML
 */

// --- Variables globales ---

// chargement du fichier XML
var xml_charge=false;
var xml_doc;

// --- Fonctions ---

// supprime les espaces qui commencent ou qui terminent la chaine specifiee
function xml_suppEsp(chaine) {
  var xdeb;
  var xfin;
  xdeb=chaine;
  xfin=chaine;
  for(var i=0((i<xdeb.length&& (xdeb.charAt(i)==' ')); i++) {
    xfin=xfin.substring(1, xfin.length);
  }
  xdeb=xfin;
  for(var i=xdeb.length-1((i>=0&& (xdeb.charAt(i)==' ')); i--)
    xfin=xfin.substring(0, xfin.length-1);
  return (xfin);
// fin forms_suppEsp(chaine)

// indique si le navigateur accepte le XML
function accepteXML() {
  return ((document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("XML""1.0"))
    || (document.implementation && document.implementation.createDocument)
    || (window.XMLHttpRequest)
    || (window.ActiveXObject)
    || (document.createElement && document.childNodes));
// fin accepteXML()

// charge en memoire le fichier XML d'URL specifiee
function chargerFichierXML(url) {
  if ((!url|| (url=="")) return false;
  xml_charge=false;
  try {
    // implementation conforme au DOM du W3C (Firefox, Mozilla, Netscape)
    if (document.implementation && document.implementation.createDocument) {
      xml_doc=document.implementation.createDocument(""""null);
      xml_doc.onload=function () { xml_charge=true}
      xml_doc.load(url);
    // implementation avec objet XMLHttpRequest
    else if (window.XMLHttpRequest) {
      xml_doc=new XMLHttpRequest();
      xml_doc.onreadystatechange=function () { if (xml_doc.readyState==4xml_charge=true}
      xml_doc.open("GET", url, true);
      xml_doc.send(null);
    // implementation avec ActiveX (Internet Explorer)
    else if (window.ActiveXObject) {
      xml_doc=new ActiveXObject("Microsoft.XMLDOM");
      xml_doc.onreadystatechange=function () { if (xml_doc.readyState==4xml_charge=true}
      xml_doc.load(url);
    // implementation avec un objet IFRAME et une division cachee (Opera 7)
    else if (document.createElement && document.childNodes) {
      var ndiv=document.createElement("DIV");
      ndiv.id="jslib_xml_div";
      ndiv.style.position="absolute";
      ndiv.style.visibility="hidden";
      ndiv.innerHTML = "<iframe onLoad=\"xml_doc=window.frames.jslib_xml_ifr.window.document; xml_charge=true;\""
        " name=\"jslib_xml_ifr\" src=\"" + url + "\"><\/iframe>";
      document.body.appendChild(ndiv);
    else {
      return false;
    }
  catch (e) {
    return false;
  }
  return true;
// fin chargerFichierXML(url)

// compte le nombre de noeuds XML de nom specifie
function compterNoeuds(nomNoeud) {
  if (!xml_chargereturn 0;
  if ((!nomNoeud|| (nomNoeud=="")) return 0;
  var elts=xml_doc.getElementsByTagName(nomNoeud);
  return (parseInt(elts.length));
// fin compterNoeuds(nomNoeud)

// retourne les commentaires du document XML
function obtenirCommentaires() {
  if (!xml_chargereturn "";
  var elts=xml_doc.childNodes;
  var txt="";
  if (elts.length<1return txt;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==8) {
      if (txt!=""txt+="\n";
      txt+=xml_suppEsp(elts[i].nodeValue);
    }
  }
  return txt;
// fin obtenirCommentaires()

// retourne le premier noeud XML de nom et de valeur specifies
function obtenirNoeud(nomNoeud, valeurNoeud) {
  if (!xml_chargereturn;
  if ((!nomNoeud|| (nomNoeud=="")) return;
  var elts=xml_doc.getElementsByTagName(nomNoeud);
  if (elts.length<1return;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==1) {
      if ((!valeurNoeud|| (obtenirValeurNoeud(elts[i])==valeurNoeud))
        return (elts[i]);
    }
  }
  return;
// fin obtenirNoeud(nomNoeud, valeurNoeud)

// retourne le noeud fils de nom specifie du noeud XML passe en parametre
function obtenirNoeudFils(noeud, nomFils) {
  if (!xml_chargereturn;
  if (!noeudreturn;
  if ((!nomFils|| (nomFils=="")) return;
  var elts=noeud.childNodes;
  if (elts.length<1return;
  for (var i=0; i<elts.length; i++) {
    if ((parseInt(elts[i].nodeType)==1)
      && (obtenirNomNoeud(elts[i])==nomFils))
      return elts[i];
  }
  return;
// fin obtenirNoeudFils(noeud, nomFils)

// retourne le noeud pere du noeud XML passe en parametre
function obtenirNoeudPere(noeud) {
  if (!xml_chargereturn;
  if (!noeudreturn;
  if (noeud.parentNodereturn (noeud.parentNode);
  return;
// fin obtenirNoeudPere(noeud)

// retourne le noeud XML racine du document XML
function obtenirNoeudRacine() {
  if (!xml_chargereturn;
  var elts=xml_doc.childNodes;
  if (elts.length<1return;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==1)
      return(elts[i]);
  }
  return;
// fin obtenirNoeudRacine()

// retourne le nom du noeud XML passe en parametre
function obtenirNomNoeud(noeud) {
  if (!xml_chargereturn "";
  if (!noeudreturn "";
  if (noeud.nodeNamereturn (noeud.nodeName);
  if (noeud.namereturn (noeud.name);
  return "";
// fin obtenirNomNoeud(noeud)

// retourne la valeur de l'attribut specifie du noeud XML passe en parametre
function obtenirValeurAttribut(noeud, attribut) {
  if (!xml_chargereturn "";
  if (!noeudreturn "";
  if ((!attribut|| (attribut=="")) return "";
  if (noeud.getAttribute(attribut)) return noeud.getAttribute(attribut);
  if (noeud.attributes[attribut]) return noeud.attributes[attribut].value;
  return "";
// fin obtenirValeurAttribut(noeud, attribut)

// retourne la valeur du noeud XML passe en parametre
function obtenirValeurNoeud(noeud) {
  if (!xml_chargereturn "";
  if ((!noeud|| (!noeud.firstChild)) return "";
  if (noeud.firstChild.nodeValuereturn (xml_suppEsp(noeud.firstChild.nodeValue));
  if (noeud.firstChild.datareturn (xml_suppEsp(noeud.firstChild.data));
  return "";
// fin obtenirValeurNoeud(noeud)

// retourne le premier noeud XML dont la valeur contient la chaine specifiee
function rechercherNoeud(nomNoeud, valeurNoeud) {
  if (!xml_chargereturn;
  if ((!nomNoeud|| (nomNoeud=="")) return;
  if (!valeurNoeudvaleurNoeud="";
  var elts=xml_doc.getElementsByTagName(nomNoeud);
  if (elts.length<1return;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==1) {
      if (obtenirValeurNoeud(elts[i]).toLowerCase().indexOf(valeurNoeud.toLowerCase())>=0)
        return (elts[i]);
    }
  }
  return;
// fin rechercherNoeud(nomNoeud, valeurNoeud)

// retourne le premier noeud XML dont l'attribut specifie contient la chaine specifiee
function rechercherNoeudParAttribut(nomNoeud, attribut, valeurAttribut) {
  if (!xml_chargereturn;
  if ((!nomNoeud|| (nomNoeud=="")) return;
  if ((!attribut|| (attribut=="")) return;
  if (!valeurAttributvaleurAttribut="";
  var elts=xml_doc.getElementsByTagName(nomNoeud);
  if (elts.length<1return;
  for (var i=0; i<elts.length; i++) {
    if (parseInt(elts[i].nodeType)==1) {
      if (obtenirValeurAttribut(elts[i], attribut).toLowerCase().indexOf(valeurAttribut.toLowerCase())>=0)
        return (elts[i]);
    }
  }
  return;
// fin rechercherNoeudParAttribut(nomNoeud, attribut, valeurAttribut)

// verifie que le fichier XML est totalement charge en memoire
function verifierChargementXML() {
  return (xml_charge);
// fin verifierChargementXML()

    </SCRIPT>
  </HEAD>

  <BODY>
 
    <H1>JsLib 1.3</H1>
    <HR>
    <H2>Exemple - xml.js</H2>

    <NOSCRIPT>
      <P><I>Erreur : votre navigateur ne reconnait pas le Javascript ou est configur&eacute; pour ne
      pas prendre en compte le code Javascript. Dans ce dernier cas, vous pouvez modifier la
      configuration dans les pr&eacute;f&eacute;rences/options de votre navigateur.</I>
      <HR>
    </NOSCRIPT>
    
    <P>Est-ce que votre navigateur prend en charge le XML ?
      <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript">
        if (accepteXML()) document.write("oui");
        else document.write("non");
      </SCRIPT>

    <FORM ACTION="GET" NAME="f1" onSubmit="return false">

      <P>Charger le fichier "europe.xml"&nbsp;:
        <INPUT TYPE=BUTTON NAME="b1" VALUE="Charger"
          onClick="alert(chargerFichierXML('./extra/europe.xml'));">
                    
      <P>V&eacute;rifier le chargement du fichier "europe.xml"&nbsp;:
        <INPUT TYPE=BUTTON NAME="b2" VALUE="V&eacute;rifier"
          onClick="if (verifierChargementXML()) alert('Chargement des donn&eacute;es OK.');
                    else alert('Chargement des donn&eacute;es incomplet.');">

      <P>Commentaires du document XML&nbsp;:
        <INPUT TYPE=BUTTON NAME="b3" VALUE="Afficher"
          onClick="alert(obtenirCommentaires());">
 
      <P>Nom du noeud racine du document XML&nbsp;:
        <INPUT TYPE=BUTTON NAME="b4" VALUE="Afficher"
          onClick="alert(obtenirNomNoeud(obtenirNoeudRacine()));">
      
      <P>Valeur du premier noeud de nom "etat"&nbsp;:
        <INPUT TYPE=BUTTON NAME="b5" VALUE="Afficher"
          onClick="alert(obtenirValeurNoeud(obtenirNoeud('etat')));">

        <P>Valeur du premier noeud de nom "etat" fils du noeud racine du document XML&nbsp;:
        <INPUT TYPE=BUTTON NAME="b6" VALUE="Afficher"
          onClick="alert(obtenirValeurNoeud(obtenirNoeudFils(obtenirNoeudRacine(), 'etat')));">
        
      <P>Nom du noeud p&egrave;re du premier noeud de nom "etat"&nbsp;:
        <INPUT TYPE=BUTTON NAME="b7" VALUE="Afficher"
          onClick="alert(obtenirNomNoeud(obtenirNoeudPere(obtenirNoeud('etat'))));">
        
      <P>Compter le nombre de noeuds de nom "etat"&nbsp;:
        <INPUT TYPE=BUTTON NAME="b8" VALUE="Compter"
          onClick="alert(compterNoeuds('etat'));">
                
      <P>Rechercher l'ann&eacute;e d'entr&eacute;e dans l'Union d'un Etat europ&eacute;en
        en fonction de son nom&nbsp;:
      <TABLE SUMMARY="table" BORDER=CELLSPACING=CELLPADDING=5><TR>
        <TD>Etat&nbsp;:</TD>
        <TD><INPUT TYPE=TEXT NAME="t1" VALUE="Allemagne" SIZE=40 MAXLENGTH=40></TD>
        <TD><INPUT TYPE=BUTTON NAME="b9" VALUE="Rechercher"
          onClick="document.f1.t2.value=obtenirValeurAttribut(rechercherNoeud('etat', document.f1.t1.value), 'entree');">
        </TD>
      </TR><TR>
        <TD>Entr&eacute;e dans l'Union&nbsp;:</TD>
        <TD><INPUT TYPE=TEXT NAME="t2" VALUE="" SIZE=4></TD>
        <TD></TD>
      </TR></TABLE>
          
      <P>Rechercher un Etat europ&eacute;en en fonction de sa capitale&nbsp;:
      <TABLE SUMMARY="table" BORDER=CELLSPACING=CELLPADDING=5><TR>
        <TD>Capitale&nbsp;:</TD>
        <TD><INPUT TYPE=TEXT NAME="t3" VALUE="Riga" SIZE=40 MAXLENGTH=40></TD>
        <TD><INPUT TYPE=BUTTON NAME="b10" VALUE="Rechercher"
          onClick="document.f1.t4.value=obtenirValeurNoeud(rechercherNoeudParAttribut('etat', 'capitale', document.f1.t3.value));">
        </TD>
      </TR><TR>
        <TD>Etat&nbsp;:</TD>
        <TD><INPUT TYPE=TEXT NAME="t4" VALUE="" SIZE=40></TD>
        <TD></TD>
      </TR></TABLE>

    </FORM>
    
  </BODY>
</HTML>



           
       
Related examples in the same category
1. function loads the XML document from the specified URL
2. Convert XML to HTML
3. XML to JavaScript
4. Display XML content in HTML table
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.