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 :

Renommer un Element [DOM]


Sujet :

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

  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Renommer un Element
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element element = document.createElement("nom_balise");
    Je voudrais pouvoir renommer la balise, si possible sans parcourir l'élément et sans copier tous les childs et attributs dans un nouvel Element.
    Quelqu'un saurait-il comment faire ?
    Merci

    (Je suis sous l'api DOM standard pas sous JDOM )

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pense pas que ce soit possible.

  3. #3
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    tu as un exemple ici

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    merci pour vos réponses. Je suis pas sous JDOM et org.w3c.dom.Element n'a pas de méthode setName(). A priori il faudrait que j'implémente Element et que je redéfinisse getLocalName() et/ou getTagName() mais c'est un peu prise de tête pour pas grand chose, je vais me débrouiller autrement, merci

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    edit: grillé, faut que je scrolle jusqu'au bout moi!

  6. #6
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    autant pour moi j avais pas lu que t etais sous DOM et non Jdom ....
    pourquoi ne pas passer sous Jdom ??

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Tout simplement parce que l'API n'est pas dans le JDK et je ne veux pas dépendre d'une lib externe uniquement pour cette fonctionnalité ^_^

  8. #8
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    ah oui ....
    en même temps Jdom ca doit être qq centaines de Ko ...
    une fois dans le jar tu le vois même pas ....

    enfin si t es obligé .... faut trouver un big boss DOM

  9. #9
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    pour renommer un noud, il faut utiliser la methode renameNode de Document.
    Voici un petit example :

    Code : 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
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
     
    public class TestRenameNode {
     
    	public static void main(String[] args) throws Exception {
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		Document document = builder.newDocument();
     
    		Element element = document.createElement("AAAA");
    		element.setAttribute("att1", "bbbb");
    		System.out.println("TagName=" + element.getTagName() + ", att1="
    				+ element.getAttribute("att1"));
     
    		document.renameNode(element, null, "BBBB");
    		System.out.println("TagName=" + element.getTagName() + ", att1="
    				+ element.getAttribute("att1"));
    	}
    }
    Et personnelement je conseille tres fortement d'utiliser les API qui suivennt w3c et pas JDOM qui a ses propres interfaces. Ceci permet d'utiliser plusieurs implementations w3c et les faire cohabiter.

    Angelo

  10. #10
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Arf j'aurais quand même pu regarder la doc de Document ^_^.
    Merci pour ta réponse
    En revanche ça plante :

    Exception in thread "main" java.lang.AbstractMethodError: gnu.xml.dom.DomDocument.renameNode(Lorg/w3c/dom/Node;Ljava/lang/String;Ljava/lang/StringLorg/w3c/dom/Node;
    J'ai testé sous les JRE 6.0.03, 6.0.05, 6.0.06 c'est bizzare.

    [edit]
    Ca marche si j'en fais un jar, je dois avoir un problème sous Eclipse, pourtant a priori j'utilise le même JRE.

  11. #11
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonsoir,

    Je pense que dans tes 2 tests tu ne doit pas avoir le meme classpath et du coupe je pense que tu utilises 2 implementation DOM Document differente. Dans le cas qui plante, je pense que tu dois avoir un jar xerces (ou autres) qui pose probleme (pourquoi??? je ne sais pas).

    Il y a une discussion ici, qui ressemble a ton probleme. Tout ca pour dire quil faudrait que tu trouves le jar qui pose probleme et l'enelever du classpath.


    Angelo

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    gnu.xml.dom.DomDocument
    Tu m'a l'air sous la jvm gnu, elle implémente peut etre pas la méthode

  13. #13
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Ootch j'avais zappé, j'utilise jfreechart qui utilise gnujaxp.jar, merci à vous pour vos réponses le problème est résolu.

  14. #14
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Ootch j'avais zappé, j'utilise jfreechart qui utilise gnujaxp.jar, merci à vous pour vos réponses le problème est résolu.
    salut, j'utilise jfreechart et j'ai presque le meme probleme:
    Code : 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
    27
    28
    29
    30
    31
    32
     
    GRAVE: Exception lors de l'envoi de l'�v�nement contexte initialis� (context initialized) � l'instance de classe d'�coute (listener) com.sun.faces.config.ConfigureListener
    java.lang.AbstractMethodError: gnu.xml.dom.DomElement.getTextContent()Ljava/lang/String;
    	at com.sun.faces.config.processor.AbstractConfigProcessor.getNodeText(AbstractConfigProcessor.java:140)
    	at com.sun.faces.config.processor.FactoryConfigProcessor.processFactories(FactoryConfigProcessor.java:148)
    	at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:125)
    	at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202)
    	at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:195)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
    	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
    	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
    	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    comment avez vous resolu le probleme?

  15. #15
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    désolé mais j'ai simplement viré jfreechart du projet, je ne sais donc pas comment faire cohabiter les 2 API Dom.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49
  2. [VB6] [FileListBox] Récupérer les éléments sélectionnés
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 09h11
  3. Renommer un repertoire
    Par Sitas dans le forum Langage
    Réponses: 5
    Dernier message: 14/08/2002, 11h56
  4. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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