Bonjour à tous,
Je travaille actuellement sur un projet et j'ai besoin de parcourir un fichier XMI (exporté de ArgoUML).
Voici le début de mon fichier XMI:
J'utilise Jdom pour accéder aux différents éléments. J'arrive à accéder à l'élément XMI.content mais pas aux éléments commençant par "UML:Xxxxx".
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 <?xml version = '1.0' encoding = 'UTF-8' ?> <XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Sun Nov 18 17:50:27 GMT 2012'> <XMI.header> <XMI.documentation> <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> <XMI.exporterVersion>0.34(6) revised on $Date: 2010-01-11 22:20:14 +0100 (Mon, 11 Jan 2010) $ </XMI.exporterVersion> </XMI.documentation> <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> <XMI.content> <UML:Model xmi.id = '127-0-1-1--249a68fe:13b14925ffa:-8000:0000000000000A5D' name = 'untitledModel' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Namespace.ownedElement> <UML:Package xmi.id = '127-0-1-1--249a68fe:13b14925ffa:-8000:0000000000000A5E' name = 'Controllers' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> <UML:Class xmi.id = '127-0-1-1--249a68fe:13b14925ffa:-8000:0000000000000A5F' name = 'FileController' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
Voici ma classe:
Sur beaucoup de forums j'ai cru comprendre que ce serait un problème de namespace?
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 package models; import java.io.*; import org.jdom2.*; import org.jdom2.input.*; import org.jdom2.filter.*; import java.util.List; import java.util.Iterator; public class ImportXMI { static org.jdom2.Document document; static Element root; public ImportXMI(File xmiFile){ SAXBuilder sxb = new SAXBuilder(); try { //On crée un nouveau document JDOM avec en argument le fichier XML //Le parsing est terminé ;) document = sxb.build(xmiFile); } catch(Exception e){System.out.println(e.getMessage());} //On initialise un nouvel élément racine avec l'élément racine du document. root = document.getRootElement(); //Méthode définie dans la partie 3.2. de cet article afficheALL(); } //Ajouter cette méthodes à la classe JDOM2 static void afficheALL() { System.out.println("Affichage de la liste:"); Namespace ns = Namespace.getNamespace("UML", "org.omg.xmi.namespace.UML"); List<Element> xmiContent = root.getChildren("XMI.content");//Retourne l'élément XMI.content List<Element> xmiClass = root.getChildren("UML:Class");//Retourne une liste vide... List<Element> xmiClass2 = root.getChildren("UML:Class", ns);//Retourne une liste vide... List<Element> xmiClass3 = root.getChildren("Class", ns);//Retourne une liste vide... for(int i=0; i<xmiClass.size(); i++){ System.out.println(i + xmiContent.get(i).getName()); } } }
J'ai pourtant récupéré le namespace dans mon code mais cela n'a rien changé.
Merci d'avance
Partager