Traitement d'un fichier xml

Soyez le premier à donner votre avis sur cette source.

Vue 13 358 fois - Téléchargée 1 185 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
-
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
-
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
-
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
-
haineT
Messages postés
4
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
30 décembre 2002
-
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.