Découpage fichier xml

akhen3100 -  
vignemail1 Messages postés 1262 Statut Contributeur -
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

  1. vignemail1 Messages postés 1262 Statut Contributeur 259
     
    Tu peux aussi voir la librairie JDOM qui est plus facile à utiliser.
    0
  2. akhen3100
     
    Auriez vous un exemple de code qui permet de faire ce découpage avec SAX et/ou JDOM

    Merci
    0
  3. vignemail1 Messages postés 1262 Statut Contributeur 259
     
    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++;
    		}
    
    	}
    }
    
    0