Changer nom balise avec Java Sax

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)

2 réponses

  1. 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
    1. 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