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 :

Probleme modifier une balise avec DOM


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Par défaut Probleme modifier une balise avec DOM
    Bonjour

    j'ai un fichier du type:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <accounts>
    	<account>
    		<LogonID>jsmith</LogonID>
    		<FirstName>John</FirstName>
    		<LastName>Smith</LastName>
    	</account>
    </accounts>

    Je dois representer une base de donnee dans un fichier XML, et pouvoir executer des actions du type modifier firstName=toto où logonID a pour valeur jsmith

    mon code est le suivant

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    public void modifyElement2(String xmlFile) throws SAXException, IOException, TransformerException, ParserConfigurationException {
     
    		File file = new File(xmlFile); // mon fichier xml contenant la database
    		System.out.println("1");
     
    		if (file.exists()){
    			// création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
     
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
    			// lecture du contenu d'un fichier XML avec DOM
    			File xml = new File(xmlFile);
    			Document doc = constructeur.parse(xml);
     
    	        Vector <String> arrKeys=parserXml.getArrKeys();
    	        String primaryKey =parserXml.getPrimaryKey();
    	        String value = parserXml.getValuePrimaryKey();
     
    	        NodeList listfind= doc.getElementsByTagName(primaryKey);
    	        for(int j=0;j<listfind.getLength();j++){
    	 	       Element e = (Element) listfind.item(j);
     
    	 	       if (e.getTextContent().equals(value)){
     
    	 	    	  Node node= e.getParentNode();
    	 	    	  NodeList list= node.getChildNodes();
     
     
     
    	 	    	  for(int i=0;i<list.getLength();i++){
     
    	 	    		 Node f = list.item(i);
    	 	    		 if (f.getNodeType()==Node.TEXT_NODE){
    	 	    			 getModification(f);
    	 	    		 }
     
     
     
    	 	    	  }
     
    	 	    	   }
    	 	       }   
     
    		}
    	}
     
     
     
     
    	public 	void  getModification (Node node){
     
     
     
    	Iterator i = parserXml.getContent().keySet().iterator();
    	System.out.println("5");
    	while (i.hasNext())
    	{
    		String key = (String)i.next();	//la cle de modification
    		char firstletter=key.charAt(0);
    		int firstletterinASCII = (int) firstletter;
    		String value = (String)parserXml.getContent().get(key); // la valeur de modification
     
     
    			if (node.getNodeName().equals(key)){
     
    			node.setTextContent(value);}
    			// we change the attribute of the key
     
    			}
    		}
     
    }


    mon code ne marche pas et ne maffiche rien

    Mais je trouve ca bien long comme fonction pour faire ce aue je fais...Et je dosi imperativement utiliser DOM (fixe par le client)

    Je ne comprends vrament pas , pouvez vous m'aider

  2. #2
    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,
    effectivement tu dois pouvoir réduire un peu mais pas tant que ça.
    Ce qui me choque plus c'est que tu crées ton arbre dans la fonction modifyElement2(). Tu devrais le créer une fois pour toute à la sélection de ta BDD (enfin de ton fichier).

    Je ne comprends donc pas bien l'intérêt de ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Vector <String> arrKeys=parserXml.getArrKeys();
    String primaryKey =parserXml.getPrimaryKey();
    String value = parserXml.getValuePrimaryKey();
    Si tu crées ton arbre une seule fois, ta signature devient un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modifyElement2(String pKeyName, String pKeyValue, String fieldName, String fieldValue)
    Ensuite ceci devrait suffire pour la modif je pense (au lieu de passer par getModification()) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (e.getTextContent().equals(value)){
    Node node = e.getParentNode();
    NodeList fields = node.getElementsByTagName(fieldName);
    fields.item(0).setContentText(fieldValue);
    }
    En ajoutant des tests de vérification.

Discussions similaires

  1. Modifier la valeur d'une balise avec getElementById
    Par cooldid dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/01/2008, 12h08
  2. [DOM]modifier une balise xsl via le DOM
    Par boule_t dans le forum APIs
    Réponses: 1
    Dernier message: 19/10/2007, 14h54
  3. [DOM] insertion d'une balise dans une autre avec DOM
    Par sebus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/03/2007, 00h16
  4. probleme d'une DLL avec une page asp
    Par aymane_farissi dans le forum ASP
    Réponses: 3
    Dernier message: 29/09/2005, 16h25
  5. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 10h51

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