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 :

CityGML et namespaces [JDOM]


Sujet :

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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut CityGML et namespaces
    Bonjour,

    je travaille sur un programme qui écrit des fichiers en CityGML (format 3D dérivé du XML) et j'utilise JDOM. Je voudrais avoir dans mon fichier de sortie des balises qui ressemblent à ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <gml:description>...</gml:description>
    <bldg:Building gml:id="01">...</bldg:Building>
    Comme JDOM n'aime pas les deux points dans les noms de balises, je suis allée voir la FAQ de JDOM : http://www.jdom.org/docs/faq.html#a0250 et je crée mes éléments comme c'est expliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element e = new Element("description", "gml", "qqch qui ne me sert pas");
    Evidemment, j'ai en sortie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <gml:description xmlns="qqch qui ne me sert pas">
    ce qui est plutôt gênant parce que ça veut dire que je vais devoir retraiter le fichier après coup pour enlever le xmlns ou le transformer en gml:id, donc parser le fichier, reconnaître les mots, remplacer, etc......

    Est-ce que quelqu'un aurait une meilleure idée sans avoir à retraiter ? Ou bien un autre outil que JDOM qui accepte les deux points...?

    Merci beaucoup...

  2. #2
    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
    Tes gml: et bldg: sont ce qu'on appelle des préfixes. Ils servent à mettre les éléments dans le namespace qui a été déclaré associé à ce préfixe avec xmlns:gml et xmlns:bldg à la racine du document.

    En JDOM, tu dois juste créer les Namespace de la même manière (en indiquant l'URI du namespace et le préfixe auquel l'associer) et créer tes éléments en passant ce Namespace en paramètre.

    Voili voilà.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Hmm, je suis pas sûre d'avoir très bien compris.

    D'après ce que tu dis, je crée mon élément comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Namespace ns = Namespace.getNamespace("prefix", "uri");
    Element e = new Element("name", ns);
    Sauf que je ne veux pas d'URI. Mais que si je ne la mets pas, il ne comprend pas le prefix comme un préfixe mais comme une URI. Et que je ne peux pas donner à l'URI la valeur null...

    Et en fait, quand je crée mes éléments sans passer par un Namespace, je fais à peu près la même chose : new Element(name, prefix, uri) d'après la doc.



    Par contre je viens de me rendre compte en testant avec quelques éléments que sur une dizaine de balises, il y en a deux qui sont créées exactement comme je veux, sans xmlns, et pourtant j'ai instancié mes éléments de la même façon à chaque fois... comprends plus rien...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Aaaah, je crois que j'ai compris. Quand je mets le même Namespace à toutes les balises filles d'une même balise, il enlève les xmlns des balises filles.

    Donc je suppose que ce que tu disais c'est de créer un Namespace global pour tout le fichier. Bon, ça résout mon premier problème, merci beaucoup !

    Par contre, comment faire pour avoir des gml:id au lieu des xmlns:gml ? Je crée un Namespace du Namespace...?

  5. #5
    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
    Citation Envoyé par Encornet Voir le message
    Par contre, comment faire pour avoir des gml:id au lieu des xmlns:gml ? Je crée un Namespace du Namespace...?
    Nan nan, mais, si tu veux utiliser le préfixe gml:, tu dois avoir xmlns:gml déclaré quelque part (de préférence à la racine, mais si tu veux des précisions tu devrais juste lire un bouquin de XML, chapitre "namespaces".)
    Là-dessus, personne ne te demandera ton avis, si tu n'es pas d'accord, oublie les outils XML car ils ne t'aideront pas.

    Pour avoir des attributs gml:id, c'est pas très différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.setAttribute("id", "mon-id", gmlNamespace);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    Ne t'inquiète pas, je ne comptais pas bafouer les règles du XML, j'ai quand même envie que mon document soit valide... ^^

    Donc je crée des Namespace globaux à la racine puis je fais setAttribute.

    Merci encore !

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

Discussions similaires

  1. namespace dans feuille xslt : comment ca marche exactement ?
    Par guipom dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 11/11/2004, 16h21
  2. expression XPath et namespace
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/10/2004, 13h26
  3. parser un XHTML bien formé (problème namespace)
    Par luta dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 18/10/2004, 12h55
  4. [Debutant][Divers] - namespace et attributs
    Par sebbb dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 14h40
  5. Erreur récurrente (namespace)
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 3
    Dernier message: 25/02/2003, 10h27

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