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)

2 réponses

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