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 :

Modifier noeud root [DOM]


Sujet :

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

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Modifier noeud root
    bonjour,
    voici mon problème :
    - j'ai un document XML du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <toto>..... (suite de balises)
    </toto>
    - je désirerai ajouter noeud titi avant le noeud toto (noeud qui est root) pour obtenir un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <titi>....</titi>
    <toto>..... (suite de balises)
    </toto>
    - voici mon bout de code qui, malheureusement pour moi, ne modifie rien au document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
           doc = parser.parse(nomFichier);
           Element eltTiti = doc.createElement("titi");
           eltTiti.setAttribute("value", "1");
           Element eltRoot = (Element)doc.getDocumentElement();
           eltRoot = (Element)doc.insertBefore(eltTiti, eltRoot);
    Quelqu'un pourrait il éclairer ma lanterne.
    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    La norme XML rend illégal ce type de construction. Il est obligatoire d'avoir une balise englobant tout le reste du document.

    extrait de la documentation XML:

    document ::= prolog element Misc*

    ou prolog est : la déclaration optionnelle "<?xml...", le doctype optionnel et du "Misc".
    et Misc est: commentaire, processing-instruction ou whitespace

    S'il te faut vraiment rajouter un élément au niveau de celui-ci, alors crée une nouvelle balise racine.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse
    La remarque sur la formation d'un document XML est parfaitement juste !
    Je vais, comme tu le conseilles, passer par la création d'une nouvelle racine.
    Pour réaliser cette opération, est ce que je dois créer un nouveau document, comment ajouter une nouvelle racine ???
    merci de m'aider

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Oui tu devras créer une nouvelle racine. Avec le code suivant par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Element eltRoot = (Element)doc.getDocumentElement();
    Document newDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
    Element newRoot = newDoc.createElement("newToto");
    newDoc.appendChild(newRoot);
    newRoot.appendChild(eltTiti);
    newRoot.appendChile(eltRoot);

  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
    Bonjour,

    attention, la méthode appendChild ne peut s'appliquer entre noeuds provenant de documents différents. Il faudra plutôt utiliser la méthode importNode.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    merci pour toute vos réponses

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

Discussions similaires

  1. Sélection du noeud root dans un arbre vide
    Par DaveShot dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 25/05/2010, 14h07
  2. Selectionner par defaut le noeud root d un JTree
    Par bebel7777 dans le forum Composants
    Réponses: 1
    Dernier message: 25/05/2010, 09h15
  3. Parcourir et modifier noeuds xml
    Par snopims dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/12/2008, 12h00
  4. [C#/XML] Modifier Noeud
    Par JOBiJOBa3 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 05/12/2008, 11h11
  5. [2.0]Replacer le noeud Root d'un XML
    Par totoen dans le forum C#
    Réponses: 7
    Dernier message: 07/08/2008, 11h24

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