
Envoyé par
momolescro
1 2
| //Et ceci pour récupérer le BODY, mais je ne comprends pas trop ce que ma liste va contenir, donc je ne sais pas comment descendre plus bas dans l'arbo
List<Element> BodyElement = racine.getChildren("Body"); |
getChildren() c'est un pluriel. Ça veut dire que tu demandes plusieurs choses qui s'appellent "Body".
Toi dans ton document tu as un seul <Body>... Mais ça te regarde. Tu aurais pu en avoir trente.
getChildren() renvoie donc la liste de tous les éléments fils de la racine, qui s'appellent "Body".
Dans ton cas, la liste contiendra donc un seul élément, le seul est unique <Body> de ton document.
Il aurait été mieux de faire :
Element bodyElement = racine.getChild("Body");
... Mais si tu essaies tu constateras que ça ne marche pas -_-°.
Pourquoi ? Parce que <soap:Body> indique que c'est l'élément <Body> dans le namespace "http://www.w3.org/2003/05/soap-envelope". Or toi, tu demandes <Body> sans aucun namespace, et il n'y a pas ça dans ton document.
Il faudrait donc faire quelque chose du genre :
1 2 3 4 5
| // quelque part dans les propriétés de ta classe :
private static final Namespace SOAP_NAMESPACE = Namespace.getNamespace("http://www.w3.org/2003/05/soap-envelope");
// ailleurs :
Element bodyElement = racine.getChild("Body", SOAP_NAMESPACE); |
... Et ça marche.
Mais ça reste compliqué d'aller chercher les <Row> à partir de là.

Envoyé par
momolescro
Pour information, j'ai besoin de récupérer toutes les lignes "Row" pour les découper et le stocker en BDD (Ne me reprochez pas le format du fichier XML, c'est celui d'un client)
Si c'est la seule chose qui t'intéresse, tu ferais mieux d'utiliser racine.getDescendants(Filters.element("Row")). Il se chargera lui-même de descendre chercher tous les éléments <Row>.
Partager