Bonjour,
Je suis bloqué depuis ce matin sur un problème d'extraction de données avec JDOM :
- Je dois extraire des noeuds (et leurs descendants) en fonction de leur nom ("iterateElement").
Ces noeuds peuvent être situés à n'importe quel endroit de l'arbre.
J'ai essayé le code suivant qui filtre, mais un peu tro : si l'élément rercherché n'es pas à la racine, seulel la racine est renvoyée.
Je ne peux pas utiliser de xpath car les données en entrée sont hétérogènes : certains flux possèdent un ou plusieurs namespaces, d'autres aucuns.
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 public static void WriteRootPrefixElementNoPrefix(String in, String out, String rootElement, final String iterateElement) { InputStream is = new ByteArrayInputStream(in.getBytes()); SAXBuilder sxb = new SAXBuilder(); document = sxb.build(is); root = document.getRootElement(); Iterator i = root.getDescendants(); Integer count = 1; while (i.hasNext()) { Element current = (Element) i.next(); if (current.isRootElement() != true && !(current.getName().contains(iterateElement))) { System.out.println("Cloning Element #" + count); current.removeContent(); count++; } }
J'ai également essayé de copier chaque élément dont le nom "match" l'IterateElement mais la fonction plante avec comme code "org.jdom.Text cannot be cast to org.jdom.Element".
Partager