Traitement d'un fichier xml

Soyez le premier à donner votre avis sur cette source.

Vue 13 834 fois - Téléchargée 1 222 fois

Description

Cette source a pour but de traiter un fichier xml de manière simple.
Pour cela , j'utilise une api qui est telechargeable sur le site http://java.sun.com
Il faut inclure 6 fichiers jar dans le package.

Ce code vise seulement à montrer comment on traite un fichier xml en java.
Pour toute suggestion, sky13@voila.fr

Source / Exemple :


import java.io.*;

import org.xml.sax.*;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;  

public class Echoing extends HandlerBase {
    // Pour gérer l'indentation du document final.
    private String indentString = "        ";
    private int indentLevel = 0;

    // Démarrage de votre programme
    public static void main (String argv []) {
        if (argv.length != 1) {
            System.err.println ("Usage: cmd filename");
            System.exit(-1);
        }

        SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser saxParser = factory.newSAXParser();
            saxParser.parse( new File(argv [0]), new Echoing() );
        } catch (Throwable t) {
            t.printStackTrace ();
        }

        System.exit(0);
    }

    /////////////////////////////////////////////////////////////
    // Les gestionnaires d'évènements SAX ///////////////////////
    /////////////////////////////////////////////////////////////

    public void startDocument () throws SAXException {
        System.out.println("START DOCUMENT");
        System.out.println("<?xml version='1.0' encoding='UTF-8'?>");
    }

    public void endDocument () throws SAXException {
        System.out.println("END DOCUMENT");
        if (indentLevel > 0) System.out.println("AIEEEE");
    }

    public void startElement (String name, AttributeList attrs)
                                                    throws SAXException  {
        tabs();
        System.out.print("<"+name);
        if (attrs != null) {
            for (int i = 0; i < attrs.getLength (); i++) {
                        System.out.println();
                        tabs();
                System.out.print("    ");
                System.out.print(attrs.getName (i));
                System.out.print(" = \"");
                System.out.print(attrs.getValue (i));
                System.out.print("\"");
            }
        }

        if (attrs.getLength() > 0) { System.out.println(""); tabs(); }
        System.out.println(">");
        indentLevel++;
    }

    public void endElement (String name) throws SAXException {
        indentLevel--;
        tabs();
        System.out.println("</"+name+">");
    }

    public void characters (char buf [], int offset, int len)
                                                      throws SAXException {
        String s = new String(buf, offset, len);
        if (!s.trim().equals("")) {
            tabs();
            System.out.println(s);
        }
    }

    /////////////////////////////////////////////////////////////
    // Fonctions utilitaires ////////////////////////////////////
    /////////////////////////////////////////////////////////////

    private void tabs() {
        for(int i=0;i<indentLevel;i++) {
            System.out.print(indentString);
        }
    }
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
ramouch0 Messages postés 1 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 6 mai 2004
6 mai 2004 à 16:18
la méthode characters est appellée à chaque fois qu'il y a du texte.
par exemple:

textxxtxt

on va avoir
startElement(...)
characters("textxxtxt",positionDuText,longeurduText)
endElement(...)

dans ce code elle ne fait qu'ajouter des tabulation l'orsque les balises sont vide...
Nicocyno Messages postés 19 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 5 novembre 2004
16 févr. 2004 à 13:35
Je viens de m'apercevoir que la fonction suivante n'est pas utilisé !
Et quand je la commante le programme marche parfaitement.
A quoi peut elle bien servir ??!

public void characters (char buf [], int offset, int len) throws SAXException
{
String s = new String(buf, offset, len);
if (!s.trim().equals(""))
{
tabs();
System.out.println(s);
}
}
Nicocyno Messages postés 19 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 5 novembre 2004
16 févr. 2004 à 13:29
C'est pas grave sans son copy/past j'aurai pas vu cette source ;)
Mais c'est vrai sky13 que tu aurais pu citer l'auteur !

Et pour pouvoir modifier un fichier XML vaut mieu que j'utilise DOM non ?
laglobule2000 Messages postés 5 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 16 mai 2003
23 juil. 2003 à 14:41
haineT Messages postés 4 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 30 décembre 2002
19 déc. 2002 à 17:27
C'est exactement ce que je cherchais! Le code fonctionne tres bien , mais avec la 1.4, (dont le package XML est fourni par defaut) ce code utilise des methodes depreciée.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.