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 :

Modification d'un noeud [XPATH]


Sujet :

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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut Modification d'un noeud
    Bonjour,

    J'ai un fichier XML ou je souhaite modifier la valeur d'un noeud. J'utilise le package javax.xml.xpath. Je réussi à atteindre le noeud mais je n'arrive pas à modifier son contenu :
    - concaténation de la valeur précédente avec la nouvelle
    - le fichier n'est pas mis à jour.

    Voilà mon code Java :
    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
    76
    77
     
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.util.Iterator;
     
    import javax.xml.namespace.NamespaceContext;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpression;
    import javax.xml.xpath.XPathExpressionException;
    import javax.xml.xpath.XPathFactory;
     
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.w3c.dom.Node;
    import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;
     
     
    public class NutStyle {
     
    	public NutStyle() throws XPathExpressionException, IOException, JDOMException {
     
            //création de la source
            InputSource source = new InputSource(getClass().getResourceAsStream("./nuts.xml"));
     
            //création du XPath 
            XPathFactory fabrique = XPathFactory.newInstance();
            XPath xpath = fabrique.newXPath();
     
            NamespaceContext namespace = new NamespaceContext(){
            	public String getNamespaceURI(String prefix){
            		if("Filter".equals(prefix)){
            			return "http://www.opengis.net/ogc";
            		}
            		else if("BBOX".equals(prefix)) {
            			return "http://www.opengis.net/ogc";
            		}
            		else if("Box".equals(prefix)) {
            			return "http://www.opengis.net/gml";
            		}
            		else if("coordinates".equals(prefix)) {
            			return "http://www.opengis.net/gml";
            		}
            		else{
            			return "http://www.opengis.net/sld";
            		}
            	}
            	public String getPrefix(String namespaceURI){
            		return null;
            	}
            	public Iterator getPrefixes(String namespaceURI){
            		return null;
            	} 
            };
            xpath.setNamespaceContext(namespace);
     
            XPathExpression exp = xpath.compile("StyledLayerDescriptor:*/NamedLayer:*/UserStyle:*/FeatureTypeStyle:*/Rule:*/Filter:*/BBOX:*/Box:*/coordinates:*");
            Node node = (Node)exp.evaluate(source,XPathConstants.NODE);
            System.out.println("node : "+node.getTextContent());
            node.setTextContent("2,3,4,5");
            System.out.println("node : "+node.getTextContent());        
    	}
     
    	public static void main(String[] args){
    		try {
    			new NutStyle();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Je joins mon fichier XML (nuts.xml).

    Merci de votre aide !
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [JAXB] Modification d'un noeud xml
    Par electrovolt dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/07/2012, 10h26
  2. [SimpleXML] SimpleXMLElement modification d'un noeud
    Par alheim dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/05/2007, 21h48
  3. [C#] [1.1] Modification d'attributs d'un noeud XML
    Par Sup@Lou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/08/2006, 16h35
  4. [XML] - Modifer un noeud
    Par jacquesh dans le forum Langage
    Réponses: 1
    Dernier message: 13/07/2006, 09h48
  5. JTree et modification des noeuds
    Par menuge dans le forum Composants
    Réponses: 2
    Dernier message: 05/05/2006, 08h55

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