Découpage fichier xml

Bonjour

Je recherche un code java utilisant SAX pour découper un gros fichier xml en plusieurs petits fichiers xml:
en entrée on a un fichier de type
<?xml version="1.0" encoding="ISO" standalone="yes"?>
<TestGlobal>
<Test>
....bloc1....
</Test>
<Test>
.....bloc2...
</Test>
....
</TestGlobal>

et en sortie on aura des fichiers avec la structure unitaire
fic1 :
<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>
<Test>
...bloc1...
</Test>

fic2
<?xml version="1.0" encoding="ISO-8859-15" standalone="yes"?>
<Test>
...bloc2...
</Test>

ficN
...
...

Merci pour votre aide
Configuration: Windows 2000
Firefox 2.0.0.7

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Tu peux aussi voir la librairie JDOM qui est plus facile à utiliser.
    1. Auriez vous un exemple de code qui permet de faire ce découpage avec SAX et/ou JDOM

      Merci
      1. Contributeur
        Je n'ai pas fait de Java depuis 3 ans mais je pense que cela devrait suffire. (p.s.: ce site n'est pas là pour faire ton boulot mais pour te donner des conseils.)
        import java.io.*;
        import org.jdom.*;
        import org.jdom.input.*;
        import org.jdom.output.*;
        import org.jdom.filter.*;
        import java.util.List;
        import java.util.Iterator;
        
        public class JDOM2 {
        	static org.jdom.Document document;
        	static Element racine;
        
        	public static void main(String[] args) {
        		//On crée une instance de SAXBuilder
        		SAXBuilder sxb = new SAXBuilder();
        		try	{
        			//On crée un nouveau document JDOM avec en argument le fichier XML
        			//Le parsing est terminé ;)
        			document = sxb.build(new File(args[0]));
        		} catch(Exception e){}
        
        		//On initialise un nouvel élément racine avec l'élément racine du document.
        		racine = document.getRootElement();
        
        		List listEnfants = racine.getChildren();
        		int index = 0;
        		//On crée un Iterator sur notre liste
        		Iterator i = listEnfants.iterator();
        		while(i.hasNext())
        		{
        			//On recrée l'Element courant à chaque tour de boucle afin de
        			//pouvoir utiliser les méthodes propres aux Element comme :
        			//selectionner un noeud fils, modifier du texte, etc...
        			try{
        				Element courant = (Element)i.next();
        				FileOutputStream fos = new FileOutputStream("fichier"+index+".xml");
        				XMLOutputter output = new XMLOutputter(XMLOutputter.preserveFormat);
        				output.output(courant);
        			}
        			catch (IOException e) {
        				System.err.println(e);
        			}
        			index++;
        		}
        
        	}
        }