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 :

Problème de modification [XPATH]


Sujet :

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

  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Problème de modification
    Hello,

    Je voudrais modifier un Document grace à XPath... Mais ça ne fonctionne pas... Je ne sais pas si le problème vient de ma chaîne XPath ou de mon code...

    Voici mon code:
    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
     
            DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
            domFactory.setNamespaceAware(true);
            DocumentBuilder builder;
            try {
                builder = domFactory.newDocumentBuilder();
                Document doc = builder.parse(configFilePath);           
     
                XPathFactory factory = XPathFactory.newInstance();
                XPath xpath = factory.newXPath();
                XPathExpression expr = xpath.compile(configValueXPath);
     
                Object result = expr.evaluate(doc);
     
                printDoc(doc.getChildNodes(), ""); // print nodes and attributes
     
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XPathExpressionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    Et voici ma chaine XPath:
    /configuration/logger[@name='Lua']/level/@value='DEBUG'
    Donc ensuite, si j'affiche mon Document, il n'a pas changé... pourquoi?

    Et un extrait de mon xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <logger name="com" />
        <logger name="com.nexthink.portal">
            <level value="INFO" />
        </logger>
        <logger name="Lua">
            <level value="INFO" />
        </logger>
    </configuration>
    Merci d'avance!

    A+

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    en premier lieu, XPath n'est pas destiné à "modifier" un document XML mais à en sélectionner des noeuds selon une expression, un genre de SQL pour fichiers XML en gros. De plus, ton expression est écrite de telle manière qu'elle ne renvoie pas une liste de noeuds mais un booléen.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Ok, bien sur, j'avais mal réfléchi. il faut passer par un DOM et le modifier en spécifiant un chemin XPath:

    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
    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
            domFactory.setNamespaceAware(true);
            DocumentBuilder builder;
            try {
     
                XPathFactory  factory=XPathFactory.newInstance();
                XPath xPath=factory.newXPath();
     
                builder = domFactory.newDocumentBuilder();
                Document doc = builder.parse(configFilePath);
     
                Element element=(Element)(xPath.evaluate(configValueXPath, doc, XPathConstants.NODE));
     
                System.out.println("> "+element.getLocalName());
     
                element.setAttribute("value", newValue);
    ...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2006, 18h14
  2. [vb6 et access] problème de modification de contenu de champ
    Par dj_tess dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/12/2005, 19h26
  3. [IShellLink] Problème de modification de raccourci
    Par Alcatîz dans le forum Windows
    Réponses: 2
    Dernier message: 17/11/2005, 09h39
  4. Réponses: 19
    Dernier message: 28/10/2005, 17h29
  5. [débutant] Problème JSplitPane (modif :InternalFrame)
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 61
    Dernier message: 03/09/2004, 17h01

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