Découpage fichier xml

Fermé
akhen3100 - 6 mars 2009 à 09:44
vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 - 6 mars 2009 à 10:26
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
A voir également:

3 réponses

vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
6 mars 2009 à 09:59
Tu peux aussi voir la librairie JDOM qui est plus facile à utiliser.
0
Auriez vous un exemple de code qui permet de faire ce découpage avec SAX et/ou JDOM

Merci
0
vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
6 mars 2009 à 10:26
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