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 :

Changer l'URI du Namespace d'un document XML


Sujet :

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

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut Changer l'URI du Namespace d'un document XML
    Bonjour,

    Je cherche désespérément à changer l'URL du namespace de l'element root sans que le document soit modifié ?

    Quand j'utilise la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Namespace ns = Namespace.getNamespace("ns","Uri");
    Element root = doc.getRootElement();
    root.setNamespace(ns);
    Sur tous les enfants il rajoute un xmlns. Comment faire pour qu'il ne modifie pas le document ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il suffit d'indiquer le namespace sur les éléments qui en font partie, ce que tu peux faire à la construction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element element = new Element("element", namespace);
    Par exemple,

    Pour obtenir
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <Root xmlns:ns1="http://namespace1_uri" xmlns:ns2="http://namespace2_uri">
      <ns1:truc>
        <ns2:truc />
      </ns1:truc>
      <bidule />
      <ns2:machin />
    </Root>

    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
    public class DemoJDOMNameSpaces {
     
    	public static void main(String[] args) {
     
            Namespace namespace1 = Namespace.getNamespace("ns1", "http://namespace1_uri");
            Namespace namespace2 = Namespace.getNamespace("ns2", "http://namespace2_uri");
     
            // créer document
            Document doc = new Document();
     
            Element root = new Element("Root");
            root.addNamespaceDeclaration(namespace1);
            root.addNamespaceDeclaration(namespace2);
            doc.setRootElement(root);
     
            Element truc = new Element("truc", namespace1);
            root.addContent(truc);
     
            Element bidule = new Element("bidule");
            root.addContent(bidule);
     
            Element machin = new Element("machin", namespace2);
            root.addContent(machin);
     
            Element soustruc = new Element("truc", namespace2);
            truc.addContent(soustruc);
     
            XMLOutputter xml = new XMLOutputter();
            xml.setFormat(Format.getPrettyFormat());
            System.out.println(xml.outputString(doc));
        }
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Oui, enfin... Du coup, changer le namespace n'est pas possible.

    Il faut reconstruire un document entier, avec les mêmes éléments mais un namespace différent pour chaque.
    Ça peut se faire assez facilement avec une méthode récursive...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/12/2011, 01h25
  2. [OpenOffice][Texte] [UNO] Changer la base de données d'un document
    Par olivier_44 dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2010, 16h40
  3. changer la valeur du namespace d'un element selon son contexte
    Par alain_ohay dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/02/2009, 15h29
  4. Réponses: 1
    Dernier message: 11/07/2008, 14h01
  5. Mise en forme : changer la police du texte de mon document
    Par mmb04 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 08/06/2007, 14h35

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