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.
Version imprimable
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:
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:
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);
Merci beaucoup. Généreuse réponse :mrgreen: :lol: