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 :

XPath et Node


Sujet :

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

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 58
    Points : 48
    Points
    48
    Par défaut XPath et Node
    Bonjour,
    J'écris actuellement une application Java multilingue qui va récupérer les différentes traductions dans des fichiers XML.
    Ces fichiers se nomment english.xml, french.xml... et ainsi de suite.
    Pour fournir une traduction à l'interface graphique, j'extrais un noeud XML en utilisant une expression XPath générée en fonction du noeud à récupérer.

    Voyons le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    		try {
    			result = expr.evaluate(xmlDocument, XPathConstants.NODE);
    		} catch (XPathExpressionException e) {
    			e.printStackTrace();
    		}
    		Node xmlNode = (Node) result;
     
    		returnString = xmlNode.getTextContent();
     
    		return(returnString);
    Et le noeud XML chargé en tant que xmlNode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    			<Menu name="File">Fichier
    				<Item name="DNS">DNS</Item>
    				<Item name="Quit">Quitter</Item>
    			</Menu>
    Or le getTextContent effectué sur le noeud Menu me renvoie non pas uniquement "Fichier" mais "Fichier DNS Quitter".

    Si l'un d'entre vous a une solution à mon problème ou a déjà été confronté à celui-ci, merci pour l'aide.

    Charles DUBANT.

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

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

    la métohde getTextContent() te renvoie la concaténation de tous les noeuds textuels présents dans le sous-arbre xmlNode parcouru récursivement. Il faudrait modifier ton code de façon à ce qu'il ne renvoie que le premier noeuds textuel fils de xmlNode. Mais je te déconseille quoi qu'il en soit de conserver ce schéma. Le modèle de contenu mixte (mélange d'éléments et de noeuds textuels) est toujours assez pénible à manipuler par code. Je te conseille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Menu name="File" title="Fichier">
      <Item name="DNS">DNS</Item>
      <Item name="Quit">Quitter</Item>
    </Menu>
    Ou encore ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Menu name="File">
      <Title>Fichier</Title>
      <Item name="DNS">DNS</Item>
      <Item name="Quit">Quitter</Item>
    </Menu>
    Ca devrait déjà être plus facile à gérer...

Discussions similaires

  1. Xpath rechercher node avec double point
    Par pavlacki dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 09/08/2013, 13h11
  2. [XPath] Des node-sets comme des path-sets ?
    Par Hibou57 dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 12/07/2007, 15h49
  3. [XPATH] à quoi correspond child::node() | attribute::* ?
    Par anouka dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/07/2007, 10h53
  4. [XPath] trouver un node
    Par jeff37 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 15/06/2006, 10h02
  5. [débutant] [XPATH]selection d un node selon son nom & nom d un
    Par Triangle dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/06/2005, 16h47

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