Java, xml et shéma xsd

philoulheinz Messages postés 6 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 21 octobre 2006 - 18 déc. 2004 à 19:07
XorXXX Messages postés 1 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 27 août 2007 - 27 août 2007 à 19:19
...
<xsd:element name="num_cours" type="xsd:short" />
<xsd:element name="nom" type="xsd:string" minOccurs="0" />
...

Bonjour,

j'ai un fichier xml et son schéma xsd et j'aimerais savoir s'il est possible de récupérer le type des données du fichier xml

par exemple, pour "num_cours" il y aurait une fct qui renverrait "short".

Est-ce possible??

J'utilise sax.

Merci (d'avance),

Phil

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
22 déc. 2004 à 15:45
:big) Neodante :big)

Pour faire cela, utilise un parseur. En java, c'est pas ça qui manque ...
Pour utiliser ceux en standard avec le JDK je vais te retourner vers le J2EETutorial qui comporte 3 ou 4 chapitres sur XML et comment faire pour parser un fichier XML. Utilise soit DOM soit SAX, avec une préférence pour SAX si tu veux juste extraire quelques données ...
J2EETutorial (chapitre 4 -> 6 par exemple !):
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
@+

[Responsable www.neogamedev.com et Admin CS]
0
philoulheinz Messages postés 6 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 21 octobre 2006
22 déc. 2004 à 17:20
ok merci,

je vais aller revoir le tuto (j'avais déjà été le voir ms je l'avais survolé :blush) ).
0
kaouther_dridi Messages postés 1 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 18 août 2007
18 août 2007 à 10:21
bonjour,
j'ai un esembles de fichiers xml et leurs  schémas  xsd et j'aimerais avoir une classe java avoir qui génère la validation de fichier xml par rapport à son xsd mais le problème que je veux bien que la validation ne s'arrête pas dés la première erreur mais elle contenue le processus de la validation et ensuite elle me rend toutes les erreurs
chose qui n'est pas possible avec sax et dom

Est-ce possible?
Merci d'avance
Bonne journée
0
XorXXX Messages postés 1 Date d'inscription lundi 27 août 2007 Statut Membre Dernière intervention 27 août 2007
27 août 2007 à 19:19
Bonjour,

    Vu que je viens de faire la même recherche, voici :
Le code n'est pas de moi, l'objectif était le même ne pas s'arrêter à la première erreur (hormis erreur de structure)

Merci à la bonne âme qui a placé cela sur internet
Bye,
[javascript:Insert_Emoticon('/imgs2/smile_wink.gif'); ]
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import java.io.*;
import java.util.*;

public class Parser extends DefaultHandler{
    protected String message(SAXParseException e){
        String message = " line "+e.getLineNumber()+", column "+e.getColumnNumber()+"\n";
        message += e.getMessage()+"\n";
//        message += "Public id : "+e.getPublicId()+"";
//        message += "System id : "+e.getSystemId();
        return message;
    }
    protected void printSAXException(SAXParseException e){
        System.out.println(message(e));
        if(e.getException() != null){
            e.getException().printStackTrace();   
        }
    }
    public void warning(SAXParseException exception) throws SAXException{
        System.out.print("[Warning]");
        printSAXException(exception);
    }
    public void error(SAXParseException exception) throws SAXException{
        System.out.print("[Error]");
        printSAXException(exception);
    }
    public void fatalError(SAXParseException exception) throws SAXException{
        String message = "[Fatal error]";
        message += message(exception);
        SAXException se = new SAXException(message, exception);
        throw se;
    }
    public static void main(String argv[]){
        try{
            SAXParserFactory fabrique = SAXParserFactory.newInstance();
            fabrique.setValidating(true);
            SAXParser parseur = fabrique.newSAXParser();
           
            File fichier = new File(argv[0]);
            DefaultHandler handler = new Parser();
            parseur.parse(fichier,handler);
       
        }catch(ParserConfigurationException pce){
            System.out.println("Erreur de configuration du parseur");
        }catch(SAXException se){
            System.out.println(se.getMessage());
        }catch(IOException ioe){
            System.out.println("Erreur d'entrée/sortie");
        }
    }
}
0
Rejoignez-nous