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

XSL/XSLT/XPATH XML Discussion :

[XPATH] Récupérer un élément dans un fichier XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut [XPATH] Récupérer un élément dans un fichier XML
    Voilà mon programme reçoit un fichier xml. De ce fichier, je voudrais extraire la valeur d'un élément avec xpath (dans une classe Java). Mon fichier XML a plusieurs namespace. Est-il possible de les ignorer? Actuellement je n'arrive pas à récupérer la valeur de mon élément et je pense que c'est dû aux namespaces.

    Merci d'avance de votre aide.

  2. #2
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    En ajoutant la propriété suivante à mon DocumentBuilderFactory, cela fonctionne:

    domFactory.setFeature("http://xml.org/sax/features/namespaces", false);

    Mais est-ce clean comme solution?

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par be_tnt
    Mais est-ce clean comme solution?
    Non, pas vraiment... La solution correcte consiste à utiliser un contexte d'espace de noms (NamespaceContext), c'est décrit dans la FAQ.

  4. #4
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par GrandFather
    Bonjour,


    Non, pas vraiment... La solution correcte consiste à utiliser un contexte d'espace de noms (NamespaceContext), c'est décrit dans la FAQ.
    Oui mais je ne voulais pas inclure dans mon code Java des namespaces en "dur". Finalement j'ai choisi une autre solution qui consiste à partir l'arbre DOm à la recherche de mon élément.

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par be_tnt
    Oui mais je ne voulais pas inclure dans mon code Java des namespaces en "dur".
    Pourquoi ? Puisque tu connais a priori la structure de ton XML (sans cela tu ne pourrais pas faire de recherches dedans), je ne vois pas de raison d'exclure de ces connaissances les namespaces utilisés, à moins qu'ils ne changent d'une instance XML à l'autre sans que la structure XML elle ne change, ce qui est un cas de figure particulièrement exotique...

  6. #6
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par GrandFather
    Pourquoi ? Puisque tu connais a priori la structure de ton XML (sans cela tu ne pourrais pas faire de recherches dedans), je ne vois pas de raison d'exclure de ces connaissances les namespaces utilisés, à moins qu'ils ne changent d'une instance XML à l'autre sans que la structure XML elle ne change, ce qui est un cas de figure particulièrement exotique...
    Si je les mets en dur dans le code, cela veut dire qu'en cas de changement de namespace (ou de nouveau), je devrais recompiler mon code. Ceci est une chose que j'évite au maximum.

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par be_tnt
    Si je les mets en dur dans le code, cela veut dire qu'en cas de changement de namespace (ou de nouveau), je devrais recompiler mon code. Ceci est une chose que j'évite au maximum.
    Tu devras également modifier ton code et recompiler si la structure XML change. Et dans la majorité des cas, en tout cas tous ceux sur lesquels j'ai travaillé, les espaces de noms varient peu, et quand ils varient la structure XML change également en même temps.

    Maintenant, tu peux externaliser les espaces de noms dans un fichier texte annexe, qui sera lu par ton appli qui créera les NamespaceContext en conséquence. En cas d'évolution, tu n'auras pas à toucher à ton code.

  8. #8
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    En fait quand la structure de mon xml change, je n'ai pas besoin de recompiler mon code Java. Celui-ci est complètement indépendant des changements de structure.

    Tu peux m'en dire plus sur ta solution pour externaliser les namespaces?

Discussions similaires

  1. récupérer un seul élément dans un fichier xml
    Par boboss76 dans le forum VBScript
    Réponses: 4
    Dernier message: 08/12/2010, 09h35
  2. [DOM] Insertion d'élément dans un fichier XML en PHP
    Par marcus13 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/04/2008, 13h51
  3. Comment ajouter un élément dans un fichier XML
    Par sorilazer dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 04/06/2007, 21h56
  4. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  5. Réponses: 14
    Dernier message: 01/12/2003, 17h47

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