IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

suppression de noeud


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre du Club Avatar de romaik
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 69
    Points
    69
    Par défaut suppression de noeud
    Bonjour a tous

    Je travaille sur une appli qui traite du xml (quelle surprise ).
    Avant toute chose, je suis en JRE 1.4.2 et je ne peux ni upgrader en 1.5 (pas à l'ordre du jour) ni rajouter de librairies externes (comme Jdom).

    Ce que je veux faire, c'est lire un fichier xml et supprimer TOUS les noeuds fils qu'il contient.

    le fichier xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <observer>
     
    	<date1 nom="date1" oblig="false" />
    	<date2 nom="date2" oblig="true" />
    	<date3 nom="datebis" oblig="false" />
    	<date4 nom="Date4" oblig="true" />
    	<date7 nom="Date7" oblig="true" />
     
    	<nombre1 nom="nombre1" oblig="true" />
    	<nombre2 nom="nombre2" oblig="false" />
    	<nombre5 nom="nombre5" oblig="false" />
     
    	<text1 nom="text1" oblig="true" type="champ">
    		<val /><val />
    	</text1>
    	<text4 nom="textlist2" oblig="false" type="liste" >
    		<val>valeur 1</val><val>valeur 2</val>
    	</text4>
    	<text5 nom="text5" oblig="true"  type="champ">
    		<val /><val />
    	</text5>
    	<text6 nom="text6" oblig="false"  type="champ">
    		<val /><val />
    	</text6>
    </observer>
    (c'est un résumé mais ça montre l'organisation)

    pour supprimer je pensais bêtement faire ça
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void empty() {
    		NodeList list = racineObserver.getChildNodes();
    		for(int i = 0; i< list.getLength();i++ ){
    			Node n = (Node) list.item(i);
    			racineObserver.removeChild(n);
    		}
    	}

    mais lors du transform, il ne se passe rien (le fichier xml reste inchangé). Une autre info, j'ai recupéré l'exemple de code du parser et du transformer depuis la FAQ dvp.

    Le nom de tous les noeuds possibles est connu d'avance donc j'ai essayé de faire
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    NodeList list = racineObserver.getElementsByTagName();
    Mais c'est vraiment très moche et très lourd (enfin je trouve).

    Une idée ?
    S'il vous manque des informations, n'hésitez pas à me demander (je pense néanmoins avoir mis l'essentiel).
    You call me a super star, you gonna have to check out the stars !

    Ma Ville - Ma Foret

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Et tu réécris le fichier après avoir fait ta transformation?

    La manipulation du DOM (transformations diverses, ajout, suppression de noeuds, modifications d'attributs, etc.) ne se fait qu'en mémoire.

    Si tu veux réellement que ces modifications soient persistées, il te faut réécrire ton fichier xml après la transformation.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre du Club Avatar de romaik
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 69
    Points
    69
    Par défaut
    oui oui, evidemment je le reécris.
    j'ai un petit peu modifier la methode trannsform car elle recoit le Document qu'elle doit enregistrer et le chemin du fichier.

    La methode transform
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    private void transform(String path, Document d) {
    		Source source = new DOMSource(d);
    		File file = new File(path);
    		Result resultat = new StreamResult(file);
     
    		// Configuration du transformer
    		TransformerFactory fabrique = TransformerFactory.newInstance();
    		Transformer transformer;
    		try {
    			transformer = fabrique.newTransformer();
    			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    			transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
    			transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
     
    			// Transformation
    			transformer.transform(source, resultat);
    		} catch (TransformerConfigurationException e) {
    			e.printStackTrace();
    		} catch (TransformerException e) {
    			e.printStackTrace();
    		}
    	}
    You call me a super star, you gonna have to check out the stars !

    Ma Ville - Ma Foret

Discussions similaires

  1. Duplication et suppression de noeud enfant en javascript
    Par kalbo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2008, 16h54
  2. [DOM XML] Suppression de noeud XML
    Par xenoox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/05/2006, 03h37
  3. [DOM] - Suppression de noeud.
    Par jacquesh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/02/2006, 11h34
  4. [DOM4J] Suppression de noeud
    Par tophebboy dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 31/01/2006, 11h14
  5. Suppression de noeud en xml
    Par Qapoka dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/09/2005, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo