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 :

Transformation XSL puis requetage XPath sur le noeud résultat


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
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut Transformation XSL puis requetage XPath sur le noeud résultat
    Bonjour,

    J'essaie d'appliquer une transormation XSL toute simple puis de faire une requête XPath sur le noeud résultat de la transformation. Mais je n'arrive pas à obtenir le noeud via la requete XPath. J'ai essayé plein de piste et en testant dans tous les sens, j'ai fini par enregistrer le XML dans un fichier, le recharger et appliquer ma requête XPath dessus : dans ce cas cela fonctionne mais ce n'est bien sûr pas satisfaisant.

    Voici le code de mon test (les méthodes utilitaires ont été supprimées pour plus de lisibilité). Le code complet est dans la pièce jointe sous la forme d'un projet Maven avec un test unitaire.
    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
     
    	@Test
    	public void testWithNativeJavaApiAndIntermediateFile() throws Exception {
    		InputStream instream = resolveClasspathFile("xslt/xslt-test-transform-2.xsl");
    		StreamSource xsltSource = new StreamSource(instream);
    		DOMSource domSource = loadXmlFromClasspathFile("xslt/xslt-test-input-2.xml");
    		prettyPrint(domSource.getNode());
     
    		Transformer transformer = TransformerFactory.newInstance().newTransformer(xsltSource);
    		DOMResult domResult = new DOMResult();
    		transformer.transform(domSource, domResult);
    		Node node = domResult.getNode();
     
    		// Store then reload the file
    		// Comment those 3 lignes to test without intermediate file
    		File xslOutputfile = new File("target", "xsl-ouput.xml");
    		prettyPrint(node, new FileOutputStream(xslOutputfile));
    		node = loadXmlFromInputStream(new FileInputStream(xslOutputfile)).getNode();
     
    		XPath xPathProcessor = XPathFactory.newInstance().newXPath();
    		XPathExpression xpathExpression = xPathProcessor.compile("/Message/Out/Personne/CodeCivilite");
    		System.out.println();
    		Node resultNode = (Node) xpathExpression.evaluate(node, XPathConstants.NODE);
     
    		if (resultNode != null) {
    			System.out.println(resultNode.getNodeName() + "=" + resultNode.getTextContent());
    		} else {
    			System.out.println("Node is null");
    		}
     
    		assertNotNull(resultNode);
    		assertEquals("CodeCivilite", resultNode.getNodeName());
    		assertEquals("M.", resultNode.getTextContent());
    	}
    Toute aide est la bienvenue, je suis complètement bloqué !

    Merci
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. XPATH > une boucle sur des noeuds enfants ?
    Par mastronic dans le forum Débuter
    Réponses: 6
    Dernier message: 09/10/2009, 16h03
  2. [xpath] startsWith sur un noeud
    Par michael08 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/01/2009, 17h46
  3. [XPath/VB.Net] Comment pointer sur un noeud enfant ?
    Par Petit_ange dans le forum Accès aux données
    Réponses: 5
    Dernier message: 27/08/2006, 13h15
  4. [XSL]Test sur le noeud fils suivant?
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 06/07/2006, 14h25
  5. Test sur le noeud frère suivant (XSLT, XPath)
    Par rprom1 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/02/2006, 16h04

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