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

XML/XSL et SOAP Discussion :

Utilisation de namespaces avec XML DOM


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Utilisation de namespaces avec XML DOM
    Bonjour,

    Je dois créer un fichier XML en utilisant l'API Microsoft XML DOM.

    Le fichier à générer est grosso modo du format suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" ...>
    <ns2:CL xmlns="http://www.1." xmlns:ns2="http://www.2.">
          <ns2:Rep>
                <name>Nom</name>
                <PostCode>1234</Postcode>
                <Phone>1245784854</Phone>
    .... 
          </ns2:Rep>
    Je ne parviens à mes fins qu'en précisant à chaque création d'élément l'adresse http du namespace à utiliser :
    ex : CreateElement(RootNode,'ns2:Rep','http://www.2...')
    ou CreateElement(RootNode,'name','http://www.1...')

    Comment se fait-il qu'en passant en paramètre le nom du namespace (ns2 par ex) le code généré est du genre :
    <ns2:Rep xmlns="ns2">

    N'y a-t-il pas d'autre solution que de mettre l'adresse http à chaque création d'élément (en fonction du ns à utiliser) ?

    Merci de votre aide

    grouic

  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
    Citation Envoyé par grouic Voir le message
    Comment se fait-il qu'en passant en paramètre le nom du namespace (ns2 par ex) le code généré est du genre :
    <ns2:Rep xmlns="ns2">
    Ben, la bibliothèque ne va pas deviner ce que c'est, ns2... Il faut bien l'indiquer quelque part.

    Après, je t'accorde qu'il faudrait un moyen de n'avoir besoin de le spécifier qu'une fois. Il y en a un, j'y viens. Mais tu ne peux pas, un coup indiquer le namespace, un coup indiquer juste son nom, et penser que la bibliothèque va deviner à chaque fois si tu parles du namespace ou de son nom.

    Citation Envoyé par grouic Voir le message
    N'y a-t-il pas d'autre solution que de mettre l'adresse http à chaque création d'élément (en fonction du ns à utiliser) ?
    Si, avec la technologie cutting-edge des variables (ou plus exactement, dans le cas présent, des constantes.)

    D'une part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static final String DEFAULTNS_URI = 'http://www.1...';
    static final String NS2_URI = 'http://www.2...';
    D'autre part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CreateElement(RootNode,'ns2:Rep',NS2_URI);
    CreateElement(RootNode,'name',DEFAULTNS_URI);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut
    Salut, et tout d'abord merci pour cette réponse rapide.
    Je m’apprêtais effectivement à mettre les URI en constante, c'est quand même plus propre.

    En fait, là où je suis étonné, c'est que, dans mon esprit, dans les attributs root, je définis les URI pour le ns par défaut et le ns2.
    En gros pour moi cette déclaration sert à dire, ns2 = URI_NS2, et si vide = URI_DEFAULT.
    Donc en utilisant en paramètre le nom du ns désiré (ns2 ou vide) il devrait savoir à quel URI il faut faire référence (?)

    Merci encore pour l'aide

  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
    Citation Envoyé par grouic Voir le message
    En fait, là où je suis étonné, c'est que, dans mon esprit, dans les attributs root, je définis les URI pour le ns par défaut et le ns2.
    En gros pour moi cette déclaration sert à dire, ns2 = URI_NS2, et si vide = URI_DEFAULT.
    Donc en utilisant en paramètre le nom du ns désiré (ns2 ou vide) il devrait savoir à quel URI il faut faire référence (?)
    Tu confonds l'écriture XML (où on déclare des namespaces pour éviter de les répéter en entier à chaque balise, simplifiant la lecture,) et la représentation du modèle de données DOM (où on manipule les éléments par leurs noms, donc un nom complètement qualifié, avec son namespace.)

    Par ailleurs ces namespaces que tu "déclares" avec DOM dans la racine, tu le fais bien d'une manière, non ? Et cette manière est bien la même que la manière utilisée pour créer de nouveaux éléments ?
    Alors pourquoi le même appel de fonction devrait signifier deux choses différentes ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Utilisation d'eval avec XML::DOM
    Par Sethenssen dans le forum Modules
    Réponses: 2
    Dernier message: 25/09/2011, 18h16
  2. Réponses: 2
    Dernier message: 14/04/2009, 15h17
  3. bizarerie avec XML::DOM::NodeList
    Par psylox dans le forum Modules
    Réponses: 0
    Dernier message: 06/10/2008, 16h44
  4. [DOM XML] Parse XML DOM avec PHP
    Par ®om dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/01/2007, 16h58
  5. [Xerces] Utilisation Donnees D'un XML avec Xerces C++
    Par Laeticia dans le forum Bibliothèques
    Réponses: 12
    Dernier message: 04/08/2006, 14h01

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