Skip to content

Djibril-Kane/Xsd-Java-Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PROJET : Générateur de code Java à partir de schémas XML (XSD)
=====================================================================

Ce générateur lit un schéma XSD (xs:element / xs:complexType / xs:sequence)
et produit une classe Java par élément complexe. La sérialisation n'est pas
dupliquée dans chaque classe générée : elle est centralisée dans XmlNode,
dont héritent toutes les classes produites, et qui utilise la réflexion
Java (java.lang.reflect.Field) pour parcourir les champs de l'objet et
reconstruire le XML.

CONTENU
-------
- bibliotheque.xsd                   : schéma XSD d'exemple fourni dans l'énoncé
- docs/regles_correspondance.md      : règles de correspondance XSD -> Java (document autonome)
- src/XmlNode.java                   : classe mère fournissant save()/toXmlString() par réflexion
- src/XsdToJavaGenerator.java        : le générateur (parsing XSD + génération des classes)
- src/ParserValidator.java           : validation autonome du parser : vérifie que la racine
                                        est détectée et que toutes les ref="..." sont résolues,
                                        sans passer par la génération/compilation de code
- generated/TestMain.java            : programme de test qui recrée le XML de l'énoncé à partir
                                        des classes générées (seul fichier de generated/ suivi par git)
- generated/*.java (générés)         : classes produites par le générateur à partir du XSD
                                        (Bibliotheque.java, Livre.java) — non versionnées, voir .gitignore
- output/                            : XML produit par TestMain à l'exécution — non versionné
- run.sh                             : rejoue tout le pipeline (voir ci-dessous)
- clean.sh                           : supprime les .class et les fichiers générés/output
- .gitignore                         : exclut du dépôt tout ce qui est généré ou compilé

COMMENT REJOUER TOUT LE PROJET
-------------------------------
Le plus simple :
   ./run.sh

Ce script fait, dans l'ordre :
1) Compile le générateur, XmlNode et ParserValidator.
2) Lance ParserValidator sur bibliotheque.xsd : affiche les éléments détectés,
   la racine, et vérifie que toutes les références sont résolues — sans
   générer ni compiler aucune classe métier.
3) Lance le pipeline complet :
   - génère les classes Java dans generated/ à partir du XSD
   - compile ces classes générées + TestMain
   - exécute TestMain, qui produit output/bibliotheque_generee.xml

Pour repartir de zéro (supprimer .class, classes générées et output/) :
   ./clean.sh

Détail des commandes lancées par run.sh, si besoin de les rejouer à la main :
   javac src/XmlNode.java src/XsdToJavaGenerator.java src/ParserValidator.java -d src/
   java -cp src ParserValidator bibliotheque.xsd
   java -cp src XsdToJavaGenerator bibliotheque.xsd generated
   javac -cp src generated/*.java -d generated
   java -cp "src;generated" TestMain

   (Sous Linux/macOS, remplacer ";" par ":" dans le classpath : -cp "src:generated")

LIMITES VOLONTAIRES
--------------------
Le générateur ne gère pas xs:attribute, xs:choice/xs:all, les contraintes
(xs:restriction, xs:pattern, xs:enumeration) ni les imports de schémas
multiples — voir docs/regles_correspondance.md, section 4, pour le détail
et la justification de ces choix.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors