Changer nom balise avec Java Sax

phlip7 Messages postés 11 Statut Membre -  
phlip7 Messages postés 11 Statut Membre -
Bonjour,

J'ai par exemple le fichier xml suivant:
<moteur>
<diesel>
</diesel>
<sp 95>
</sp 95>
</moteur>

Comment puis-je avec sax, modifier le nom d'une balise; par exemple changer le nom de la balise "sp 95" en "sp 98"?

Merci de vos réponses (je suis penché sur le problème depuis hier et je continue)
A voir également:

2 réponses

phlip7 Messages postés 11 Statut Membre
 
Pour l'instant j'ai quelque chose comme ça qui ne marche toujours pas :

 public void startElement(String uri, String localName,String qName, Attributes attributes)  throws SAXException {
          
          System.out.println("Start Element :" + qName);
          
           if (qName.equalsIgnoreCase("sp 95")) {
            handler.startElement(" ", " ", "sp 98",null);
            qName="sp 98";
           }
 }
0
phlip7 Messages postés 11 Statut Membre
 
Bon après recherche, il me semble que cela ne soit pas possible avec SAX.
J'ai donc utiliser JDOM.
Toutefois si quelqu'un a une îdée avec SAX, je suis preneur.

Mon traitement avec JDOM :


import java.io.*;

import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.StringTokenizer;

public class JDom {
	static org.jdom.Document document;
	static Element racine;

	public static void main(String[] args) {
				
		try {
			lireFichierXml("file.xml");
			
			remplaceElement("sp 95","sp 98");
				}
			}
			enregistreFichier("file.xml");
		} catch (Exception e) {
		}
	}
	 			// On parse le fichier et on initialise la racine de notre arborescence
	static void lireFichierXml(String fichierXml) throws Exception {
		SAXBuilder sxb = new SAXBuilder();
		document = sxb.build(new File(fichierXml));
		racine = document.getRootElement();
	}

				// Remplacement des balises A ADAPTER SELON LA
                               // STRUCTURE DE VOTRE FICHIER XML
	static void remplaceElement(String element, String newElement) {
								
		List listTerminaux = racine.getChildren();
		Iterator i = listTerminaux.iterator();
		while (i.hasNext()) {
			Element courant = (Element) i.next();			

			List term = courant.getChildren(element);
			Iterator iterm = term.iterator();			
			while(iterm.hasNext()){
				Element terminal = (Element)iterm.next();
				terminal.setName(newElement);
			}
		}
	}
			// Enregistrement des modifications dans le fichier
			// d'origine dans un format classique.
	static void enregistreFichier(String fichier) throws Exception {
		XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
		sortie.output(document, new FileOutputStream(fichier));
	}
}
0