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 :

Problème de namespace [JDOM]


Sujet :

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

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut Problème de namespace
    Bonjour,
    j'ai mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [...]
    //Nous allons commencer notre arborescence en créant la racine XML
    //qui sera ici "ODM", et ajoute aussi les Namespace
    Element racine = JDomComplement.ajoutNamespace("ODM","http://www.cdisc.org/ns/odm/v1.2");
    [...]
    //methode d'ajout d'un Namespace
         public static Element ajoutNamespace(String element, String url)
        {   Namespace espaceNom = Namespace.getNamespace(url);
            Element elementAjoute = new Element (element,espaceNom);
            return elementAjoute;        
        }   
    [...]
    cela me produit exactement ce que je veux mais avec des effets secondaires!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ODM xmlns="http://www.cdisc.org/ns/odm/v1.2" FileType="Snapshot"...
    <Study xmlns="" OID="SPONSOR.Trial.2008">
    [...]
    <AdminData xmlns="" StudyOID="SPONSOR.Trial.2008">
    [...]
    <ClinicalData xmlns="" StudyOID="" MetaDataVersionOID="">
    [...]"
    alors que je veux le namespace juste pour dans racine "ODM" et non pas dans les autres sous elements de la racine!!

    Comment faire dans ce cas, je vous remercie d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Bonjour,
    Peut être je me suis mal exprimer,
    En fait je ne souhaite avoir le namespace que dans la balise ODM et non pas dans les autres balises et pourtant le namespace apparait dans les autres valises.

    Je vous remercie d'avance pour votre aide

  3. #3
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    salut smix;

    je pense que le pb est que tu met deux parametres a l'appel de la creation des tes elements ... et le second est ton espaceNom : justement ce que tu ne veux pas donc essaye plutot ca :

    Element elementAjoute = new Element (element);

    Voila tiens moi au jus

    ++

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Merci de m'avoir repondu,
    je pense qu'on s'est pas très bien compris. je veux le namespace mais juste dans la première valise!.Prenons donc cette partie du code par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Namespace espaceNom = Namespace.getNamespace("http://www.cdisc.org/ns/odm/v1.2");
    Element racine = new Element("ODM",espaceNom);
    org.jdom.Document document = new Document(racine);
    Element Study = new Element(Study);
    racine.addContent(Study);
    Element AdminData = new Element(AdminData);
    racine.addContent(AdminData);
    j'ai enlevé mes methodes et j'ai utilisé directement les méthodes de l'API JDOM et pourtant j'ai toujours le même problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ODM xmlns="http://www.cdisc.org/ns/odm/v1.2"...
        <Study xmlns=""...
        <AdminData xmlns=""...
    Comme vous remarquez je ne veux avoir le xmlns que dans la première valise et pourtant cela apparait dans les autres. voici l'ensemble des methodes de l'API JDOM:http://www.jdom.org/docs/apidocs/org...Namespace.html

  5. #5
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    ok j'ai regarder vite fait sur le net ...
    je pense que tu vas devoir importer des jar car le type namespace n'ai pas defini par default ...

    regarde avec une des deux jar tu devrait pouvoir ajouter ton namespace assez facilement :

    org.eclipse.ecf.core.identity.Namespace

    org.apache.axis.wsdl.toJava.Namespaces

    apres une fois que tu aura instancier ton name space tu fait :
    root.setNamespace(namespace);

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci laurentibus,
    c'est très gentil, sauf que je travaille sous NetBeans 5.5 et qu'avec l'API JDOM j'arrive déjà à instantié un objet namespace, le problème c'est que quand tu le mets das la racine, il se met encore par defaut dans les sous balise, c'est le cas ici: moi je veux le namespace juste dans la racine ODM et pas dans study et AdminData, mais pourtant le namespace se met partout.

    merci encore

  7. #7
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    tu as bien fait

    element root = new element("nomroot") ;
    root.setNamespace(monnamespace)


    et que cela ???

    pas en utilisant la fonction new element(nom,namespace) !!!!! ???

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    merci encore,
    si voici la preuve j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Namespace espaceNom = Namespace.getNamespace("http://www.cdisc.org/ns/odm/v1.2");
    Element racine = new Element("ODM",espaceNom);
    et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Namespace espaceNom = Namespace.getNamespace("http://www.cdisc.org/ns/odm/v1.2");
    Element racine = new Element("ODM");
    racine.setNamespace(espaceNom);
    et ça me donne toujours la même chose.

    merci encore pour votre aide

  9. #9
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    he ben ca fait un peu chier que ca le marque a toute ls balises ....

    peut etre que ca a était codé d'une drole de facon ....

    désolé Smix007 ++

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Je te remercie encore laurentibus,
    j'ai posté aussi dans le forum de JDOM espérant avoir une solution.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Par défaut
    J'ai exactement le même problème, as-tu trouvé une solution ?

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Non désolé, je n'ai toujours pas trouvé de solution.

  13. #13
    Membre averti
    Homme Profil pro
    programmeur / analyste
    Inscrit en
    Novembre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur / analyste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2003
    Messages : 41
    Par défaut
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Namespace espaceNom = Namespace.getNamespace("http://www.cdisc.org/ns/odm/v1.2");
    Element racine = new Element("ODM",espaceNom);
    org.jdom.Document document = new Document(racine);
    Element Study = new Element(Study, espaceNom);
    racine.addContent(Study);
    Element AdminData = new Element(AdminData, espaceNom);
    racine.addContent(AdminData);
    J'ai eu un problème semblable et ça fonctionné pour moi.

    Cheers,

    mr. Bungle

  14. #14
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    j'ai le meme probleme, je trouve pas de solution

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    				Namespace ns=Namespace.getNamespace("net:sf:psidev:mi");
    				Element root = new Element("entrySet",ns);				
    				root.setAttribute("level", "2");
    				root.setAttribute("minorVersion", "3");
    				root.setAttribute("version", "5");								
     
    				//root.setNamespace(ns);
    				root.addNamespaceDeclaration(Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"));
    				root.addNamespaceDeclaration(Namespace.getNamespace("schemaLocation","net:sf:psidev:mi http://psidev.sourceforge.net/mi/rel25/src/MIF253.xsd"));
     
    				Document doc = new Document(root);
    				Element entry=new Element("entry");				
    				root.addContent(entry);

    resultat :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <entrySet xmlns="net:sf:psidev:mi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:schemaLocation="net:sf:psidev:mi http://psidev.sourceforge.net/mi/rel25/src/MIF253.xsd" level="2" minorVersion="3" version="5">
      <entry xmlns="">

    si qqun a une solution, je suis preneur, merci

  15. #15
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par défaut
    Je suis dans le même cas que vous, est-ce que l'un de vous a trouvé la solution à ce problème depuis le mois d'avril ?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Par défaut non...
    je suis actuellement exactement sur le même cas que toi, et je planche dur dessus.
    on se tient au courant?
    Mon but est de générer un fichier xhtml1-transitional et de vérifier si il est valide. Je suis surtout interessé par l'élément BODY que je dois par la suite copier dans un fichier XML.

    Cela étant dit, je veux juste valider un fichier xhtml temporaire.
    Mon problème est qu'il n'est pas valide à cause des namespace exédentaires.
    Et la première erreur que je reçois est celle du namespace. Donc je ne sais rien pour la suite.
    Je vais tenter de voir si je trouve une classe me permettant de récupérer la liste des erreurs. Je vais tenter avec le code trouvé ici: errorSax.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 69
    Par défaut voilà j'ai trouvé
    Il faut jongler avec les namespace envoyés au constructeur mais à la fin on y arrive.

    Si la solution fonctionne chez toi, peux-tu flagguer le message comme résolu?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Namespace ns = Namespace.getNamespace("", "http://www.w3.org/1999/xhtml");
    		Element htmlElement = new Element("html", ns);
    	htmlElement.addNamespaceDeclaration(ns);
    		Element headElement = new Element("head", ns);
    		htmlElement.addContent(headElement);
    		Element titleElement = new Element("title", ns);
    		headElement.addContent(titleElement); 
    		titleElement.setText(title);
    		body.setNamespace(ns);
    		htmlElement.addContent(body);
    		record(htmlElement, targetName);
    J'ai aussi réussi à gérer mon ErrorHandler pour créer des rapports. Yees!

  18. #18
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par défaut Solution
    Je viens de trouver ceci sur le web comme élément de réponse : http://markmail.org/message/gr4p4pwhmbojlum3

    Pedro4, on est d'accord sur la solution
    Ca fonctionne !

    Par contre, je ne sais pas flagguer le message comme résolu.
    N'est-ce pas à la personne qui a créé le topic de le faire ? Je préviens Smix007 par MP

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

Discussions similaires

  1. [XSLT]Problème de namespace sur un export XMi (UML 2.1/XMi 2.1)
    Par CocoRambo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/06/2007, 09h50
  2. problème de namespace
    Par deubelte dans le forum C++
    Réponses: 10
    Dernier message: 30/05/2007, 12h48
  3. [C#/.NET 2.0] Problème de namespace/référence
    Par Tetram165 dans le forum Services Web
    Réponses: 2
    Dernier message: 05/01/2007, 01h55
  4. [XSD] Problème de namespace
    Par pierrelm dans le forum Valider
    Réponses: 3
    Dernier message: 14/09/2006, 01h19
  5. [DOM] Problème de namespace
    Par dauggui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/04/2006, 07h22

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