Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

Sources JavaConsultez toutes les sources

Nombre d'auteurs : 29, nombre de sources : 134, création le 13 avril 2013 

 
OuvrirSommaireFlux, fichiers et réseauxXML

Exemple simple de configuration d'un parseur SAX pour lire un fichier XML.

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de création d'un bean Java (Personne) à partir d'un XML avec SAX (grâce à un handler spécialisé : PersoneHandler).

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de gestion d'erreurs lors d'un parsing SAX, grâce à un ErrorHandler.

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple simple de lecture d'un fichier XML avec L'API DOM

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple d'extraction d'informations sur un DOM : version XML, encoding, configuration DOM, etc..

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Extraction des liens d'un XHTML valide avec l'API DOM.

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de création de toutes pièces d'un DOM et sauvegarde sous forme de fichier XML avec XSLT.

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de création d'un fichier XML avec l'API SAX et XSLT.

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de création d'un HTML à partir d'un fichier XML avec XSLT

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de création d'un fichier PDF, à partir d'un fichier XML, avec FOP

Créé le 15 janvier 2005  par Ioan Calapodescu

Téléchargez le zip

Résumé de la structure voulue : une structure comme un document XML, avec des noeuds (Node) qui ont des propriétés, qui peuvent avoir des enfants, profondeur et nombre d'enfants illimités.

On utilise org.w3c.dom.*.

Node est une interface.
Element est une autre interface, Node est une superinterface de Element.
Un Element possède des attributs (concrètement : les attributs dans un fichier XML)

Le code pour créer l'arborescence.

 
Sélectionnez

import org.w3c.dom.*;
//Les 5 import suivants si on veut exporter en XML...
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import javax.xml.parsers.*;
import java.io.*;

public class Test
{
   public static void main(String[] args) throws Exception
   {
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document document = db.newDocument();

//crée un Node racine
      Node racine = document.createElement("Racine");
//et l'ajoute au document...
      document.appendChild(racine);

//Maintenant on ajout noeud1 à la racine
      Node noeud1 = ajoutNoeud(racine,"aaa", "1er noeud");
//et un fils à noeud1
      ajoutNoeud(noeud1,"bbb", "Enfant du 1er noeud");

//Un 2e noeud à la racine
      Node noeud2 = ajoutNoeud(racine,"ccc", "2e noeud");
//Avec 2 fils...
      ajoutNoeud(noeud2,"ddd", "Ainé du 2e noeud");
      ajoutNoeud(noeud2,"eee", "Cadet du 2e noeud");
      ajoutNoeud(noeud2,"fff", "Dernier enfant du 2e noeud");

//Pour transformer en XML, ça permet de voir si le document est bien construit
      TransformerFactory tf = TransformerFactory.newInstance();
      Transformer t = tf.newTransformer();
      t.transform(new DOMSource(document),new StreamResult(new File("toto.xml")));
//

//Pour parcourir le document et l'afficher
      System.out.println(affichage(document.getFirstChild(), 0));
   }

   public static Node ajoutNoeud(Node parent, String valeur1, String valeur2)
   {
      Element element = parent.getOwnerDocument().createElement("Noeud");
      element.setAttribute("code",valeur1);
      element.setAttribute("texte",valeur2);
      parent.appendChild(element);
      return element;
   }
   
   /**
    * Parcours par récurrence le noeud N, pour afficher ou faire tout autre
    * traitement sur l'arborescence
    * @param Node N le noeud à afficher
    * @param int profondeur pour connaître la profondeur  on est
    */
   public static String affichage(Node N, int profondeur) {
      String ret = "";
      Node fils;
      if (N != null) {
         if (N.hasChildNodes()) {
            //Premier enfant
            fils = N.getFirstChild();
            while (fils != null) {
               //ici le traitement spécifique
               ret += "\n";
               for (int i = 0; i <= profondeur; i++)
                  ret += "\t";
               //Pour récupérer la valeur d'un attribut :
               ret += ((Element)fils).getAttribute("code")
                    + " " + ((Element)fils).getAttribute("texte");
               
               //récurrence : affiche les enfants de fils.
               ret += affichage(fils, profondeur + 1);
               //Passe au frère suivant
               fils = fils.getNextSibling();
            }
         }
      }
      return ret;
   }
}

Le XML obtenu est :

 
Sélectionnez

<?xml version="1.0" encoding="UTF-8"?>
<Racine>
   <Noeud code="aaa" texte="1er noeud">
      <Noeud code="bbb" texte="Enfant du 1er noeud"/>
   </Noeud>
   <Noeud code="ccc" texte="2e noeud">
      <Noeud code="ddd" texte="Ainé du 2e noeud"/>
      <Noeud code="eee" texte="Cadet du 2e noeud"/>
      <Noeud code="fff" texte="Dernier enfant du 2e noeud"/>
   </Noeud>
</Racine>

La fonction affichage retourne :

 
Sélectionnez

aaa 1er noeud
    bbb Enfant du 1er noeud
ccc 2e noeud
    ddd Ainé du 2e noeud
    eee Cadet du 2e noeud
    fff Dernier enfant du 2e noeud
Créé le 15 janvier 2005  par iubito

Pour tout ceux qui se demandaient si on pouvait enregistrer des objets en XML sans passer par le format binaire de sérialisation habituel, voici une petite source qui va vous permettre de le faire ! Attention, la sérialisation XML n'est pas tout à fait l'équivalent de la sérialisation binaire utilisée par beaucoup de mécanismes Java, tout cela est précisé dans les sources. Avec la sérialisation XML (-> JavaBeans) vous ne pouvez pas faire autant qu'avec la sérialisation habituelle, le seul avantage : le fichier de sortie est lisible ...
Enjoy it !
@+

Créé le 15 janvier 2005  par Julien CHABLE

Téléchargez le zip

Exemple simple d'utilisation du package javax.xml.xpath.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de récupération d'un NodeSet (NodeList) avec XPath. Cet exemple se "connecte" au flux RSS du blog de developpez.com pour en récupérer les titres des articles publiés.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de récupération d'un Node unique avec XPath. Cet exemple se "conecte" au flux RSS du blog de develoçppez.com pour récupérer le titre du dernier article publié.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de récupération d'un booléen à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez;com puis indique si le dernier article publié appartient à la rubrique Java.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple de récupération d'une chaîne de caractères à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez.com, récupère le contenu du dernier article publié et l'affiche dans une JTextPane.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

Exemple e récupération d'n nombre à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez.com et compte le nombre d'articles parlant de J2EE dans la rubrique Java.

Créé le 15 février 2005  par Ioan Calapodescu

Téléchargez le zip

XPathUtils est une petite classe utilitaire contenant une seule méthode publique statique getXPath(). Cette méthode renvoie une chaîne contenant une expression XPath permettant d'accéder au noeud passé en paramètre, en partant de la racine de l'arbre DOM. Le noeud passé en paramètre peut être un élément, un attribut, un commentaire, un noeud texte ou la racine du document.

Créé le 11 juin 2005  par GrandFather

Téléchargez le zip

Tous les codes sources fournis gratuitement ici sont soumis à la licence GNU LGPL traduite en français ici. Par contre, la page de présentation constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2004-2005 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.