IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

getChild() renvoie null


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut getChild() renvoie null
    Bonjour,

    je suis en stage dans une entreprise et je dois faire du boulot sur du .xmi.

    J'ai un document .xmi dont voici le début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="windows-1252"?>
    <XMI xmi.version="1.1" xmlns:UML="omg.org/UML1.3" timestamp="2015-09-26 23:24:05">
    	<XMI.header>
    		<XMI.documentation>
    			<XMI.exporter>Enterprise Architect</XMI.exporter>
    			<XMI.exporterVersion>2.5</XMI.exporterVersion>
    		</XMI.documentation>
    	</XMI.header>
    	<XMI.content>
    		<UML:Model name="EA Model" xmi.id="MX_EAID_89FC3D4E_19D8_45ef_BE8D_70A2C084312B">
    			<UML:Namespace.ownedElement>
    Je souhaite récupérer le contenu de <UML:Namespace.ownedElement> mais j'obtiens null avec la méthode getChild().

    voici le code que j'ai fait :
    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
    50
    51
    52
    53
    54
    55
    56
    public class CreateJdomFromSax {
     
     
    	private static String xmlSource = "EA_v16_1.xmi";
    	private static Document document;
    	private static Element racine;
     
    	public static void main(String[] args) throws JDOMException, IOException {
     
    		document = getDoc(xmlSource);
     
            // The root element is the root of the document. we print its name
            System.out.println(document.getRootElement().getName());
     
            //racine = document.getRootElement().getChild("XMI.content").getChild("XMI.Model").getChild("UML:Namespace.ownedElement");  <- ne fonctionne pas ... 
            racine = document.getRootElement().getChild("XMI.content");
            Element model = racine.getChild("XMI.Model");    //model = null
            Element owned = model.getChild("UML:Namespace.ownedElement");     //comme model était égal à null précédemment, j'obtiens ici une ex
     
            List<Element> listPackages = racine.getChildren("UML:Package");
     
            for(Element pack : listPackages){
            	System.out.println(pack.getName());
            }
    	}//main
     
     
     
    	private static Document getDoc(String sourceFile) {
     
    				SAXBuilder jdomBuilder = new SAXBuilder();
    				Document doc = null;
     
    				// jdomDocument is the JDOM2 Object
    		        try {
    					doc =  jdomBuilder.build(new File(sourceFile));
    				} catch (JDOMException | IOException e) {e.printStackTrace();}
    				return doc;
    	}//getDoc
     
    	private static void enregistre(String fichier){
    		XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    		//Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
    		//avec en argument le nom du fichier pour effectuer la sérialisation.
    		try {
    			sortie.output(document, new FileOutputStream(fichier));
    		} catch (IOException e) {e.printStackTrace();}
    	}// enregistre
     
    	private static void affiche() {
    		XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
            try {
    			sortie.output(document, System.out);
    		} catch (IOException e) {e.printStackTrace();}
    	}//affiche
    }
    J'ai aussi essayé de mettre dans une List grâce à la méthode getChildren() mais là la liste est vide comme si ma balise n'existait pas

    Merci de bien vouloir m'aider !

    Bonne soirée,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    dans ton xml, il n'y a pas de XMI.Model dans ton XMI.Content, c'est un UML:Model.

    Ensuite, je pense que pour accéder à un autre namespace (UMLxxxx), tu dois utiliser la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getChild(java.lang.String cname, Namespace ns)

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonsoir Tchize ! et merci pour votre aide,

    Oui, c'est vrai que j'ai donné le code avec xmi.Model mais en fait javais réalisé plusieurs essais dont un avec UML:Model ..... j'aurais dû bien regarder avant de poster !

    Je me doutais bien qu'il y avait une histoire avec ces xmi et UML et je vais de ce pas essayer la méthode que vous me conseillez.

    Par contre, je n'arrive pas à trouver le namespace de l'UML ! si quelqu'un connait ?
    En fait, je vois bien qu'il y a la méthode getNamespace() mais il faut l'appeler depuis l'élément UML:Model, et je n'arrive pas à obtenir ce dernier élément car je ne connais pas son namespace ... c'est le serpent qui se mord la queue !

    Merci beaucoup !


    PS : pas mal le (UMLxxx)


  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Citation Envoyé par francky74 Voir le message
    Par contre, je n'arrive pas à trouver le namespace de l'UML ! si quelqu'un connait ?
    Il est indiqué juste là : xmlns:UML="omg.org/UML1.3". Il faut utiliser le même dans ton XML et ton programme Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.getChild(Namespace.getNamespace("omg.org/UML1.3"),"Model");

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    D'accord !

    Merci beaucoup !!!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Request.getParameter renvoie NULL
    Par the java lover dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/10/2006, 10h34
  2. [ppc] Malloc renvoie NULL !
    Par FamiDoo dans le forum C++
    Réponses: 4
    Dernier message: 18/08/2006, 10h01
  3. Operateur "new" renvoi NULL
    Par Demerzel_01 dans le forum C++
    Réponses: 25
    Dernier message: 07/07/2006, 09h43
  4. [SPL] Rewind() qui renvoie NULL
    Par fadeninev dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 06/06/2006, 15h44
  5. [JDBC]Un new qui renvoie null...
    Par Ditch dans le forum JDBC
    Réponses: 4
    Dernier message: 03/01/2005, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo