Bonjour, je voudrais savoir comment extraire un contenu bien précis dans SOAPBody. extractContentAsDocument dont le type de retour est Document ne fais pas l'affaire. Quelqu'un a une idée s'il vous plait.
Bonjour, je voudrais savoir comment extraire un contenu bien précis dans SOAPBody. extractContentAsDocument dont le type de retour est Document ne fais pas l'affaire. Quelqu'un a une idée s'il vous plait.
Ben, après tu travailles sur le Document, banane -_-°.
Le plus rapide serait de chercher dans ce Document avec XPath. La FAQ XML-Java décrit comment utiliser XPath.
En gros, si tu as un truc genre :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"> <soap:Body xmlns:t="http://truc.org/machin"> <t:truc>bidule</t:truc> </soap:Body> </soap:Envelope>
Et que tu veux récupérer ce qu'il y a dans <t:truc>, ce sera comme ça :
Personnellement, j'ajouterais JDOM dans la mêlée. Ça bouffe de la mémoire et du temps, mais il est tout de même bien plus simple que tout ce bordel.
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 // construire le contexte final String NS_PREFIX = "t"; final String NS_URI = "http://truc.org/machin"; XPathFactory factory = XPathFactory.newInstance(); XPath xpathContext = factory.newXPath(); // définir les namespaces xpathContext.setNamespaceContext(new NamespaceContext() { public String getNamespaceURI(String prefix){ if(NS_PREFIX.equals(prefix)){ return NS_URI; } return null; } public String getPrefix(String namespaceURI){ if(NS_URI.equals(namespaceURI)){ return NS_PREFIX; } return null; } public Iterator<?> getPrefixes(String namespaceURI){ return null; // inutile } }; // construire l'expression XPath XPathExpression xpath = xpathContext.compile("//t:truc"); // appliquer le XPath au document, pour récupérer la donnée voulue String truc = xpath.evaluate(document); System.out.println(truc);
Partager