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 :

Accéder à mes éléments xml


Sujet :

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

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut Accéder à mes éléments xml
    bonjour,

    comme le dit le titre ... je cherche simplement (c'est vite dit) à supprimer/insérer des éléments dans un fichier, et je cherche une méthode qui me permette d'accéder à mes éléments sous une forme où je puisse sélectionner un noeud et travailler uniquement dedans, balayer les éléments de ce noeud sachant que pour moi un noeud c'est la profondeur de recherche, je m'explique:

    exemple:

    <l>
    <m>
    <n>
    <n>
    <n>
    <m>
    <n>
    <n>
    <m>
    <l>

    le noeud 0 c'est l, le noeud 1 ce sont tous les m et le noeud 2 tous les m, je souhaite me placer dans le noeud 2 et prendre tous les éléments <n>

    Je sais pas si tout le monde galère, mais je me demande si je vais pas repasser au fichier texte, c'est bien plus simple !

    yeap, j'en ai marre de xml, c'est dingue de faire un truc non standard pour accéder à un standard !!! j'ai l'impression de vouloir décrocher la Lune alors que ce que je veux faire c'est tout simple...

    merci pour votre aide

    greg

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Il faut que tu t'intéresse au API de traitement XML comme DOM ou SAX, tu trouvera plus d'info dans la FAQ JAVA XML.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut re
    merci, j'ai déjà parcouru pas mal de site et l'aide de developpez, j'ai compris le principe ceci dit je n'arrive pas à trouver des exemples pour supprimer des noeuds complets ou alors insérer des élements à partir d'un chemin choisi par un nom mais aussi des attributs ... est-ce possible ?

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Septembre 2008
    Messages : 145
    Par défaut pb
    avec le code tiré de l'exemple de developpez:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    //Créer une nouvelle class JDOM3
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.util.List;
    import java.util.Iterator;
     
    public class JDom
    {
       static org.jdom.Document document;
       static Element racine;
     
       public static void main(String[] args)
       {
           try
           {
              lireFichier("xml.xml");
              supprElement("curve");
              enregistreFichier("xmls.xml");
            }
            catch(Exception e){}
       }
     
       //On parse le fichier et on initialise la racine de
       //notre arborescence
       static void lireFichier(String fichier) throws Exception
       {
          SAXBuilder sxb = new SAXBuilder();
          document = sxb.build(new File(fichier));
          racine = document.getRootElement();
       }
     
       //On fait des modifications sur un Element
       static void supprElement(String element)
       {
          //Dans un premier temps on liste tous les étudiants
          List listEtudiant = racine.getChildren("form");
          Iterator i = listEtudiant.iterator();
          //On parcours la liste grâce à un iterator
          while(i.hasNext())
          {
             Element courant = (Element)i.next();
             //Si l'etudiant possède l'Element en question on applique
             //les modifications.
             if(courant.getChild(element)!=null)
             {
                //On supprime l'Element en question
                courant.removeChild(element);
                //On renomme l'Element père sachant qu'une balise XML n'accepte
                //ni les espaces ni les caractères spéciaux
                //"etudiant modifié" devient "etudiant_modifie"
                courant.setName("etudiant_modifie");
             }
          }
       }
     
       //On enregsitre notre nouvelle arborescence dans le fichier
       //d'origine dans un format classique.
       static void enregistreFichier(String fichier) throws Exception
       {
             XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
             sortie.output(document, new FileOutputStream(fichier));
       }
    }

    Eh bien, ça ne fonctionne pas!!! dans mon fichier cela supprime uniquement le premier enfant de chaque noeud trouvé hors ce n'est pas ce qui est commenté ... si on peut m'aiguiller ?

  5. #5
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Bonjour,

    Dans le tutorial (exemple) la suppression a bien fonctionnée. Ci-joint le programme j'ai utilisé quand j'ai migration de DOM vers JDOM:
    Ce prrogramme utilise un String au lieu d'un fichier

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    public class TestJDom
    {
      private static String xmlInput =
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
        "<personnes>\n" +
        "   <etudiant classe=\"P2\">\n" +
        "      <nom>CynO</nom>\n" +
        "      <prenoms>\n" +
        "         <prenom>Nicolas</prenom>\n" +
        "         <prenom>Laurent</prenom>\n" +
        "      </prenoms>\n" +
        "   </etudiant>\n" +
        "   <etudiant classe=\"P1\">\n" +
        "      <nom>Superwoman</nom>\n" +
        "   </etudiant>\n" +
        "   <etudiant classe=\"P1\">\n" +
        "      <nom>Don Corleone</nom>\n" +
        "   </etudiant>\n" +
        "</personnes>";
      private org.jdom.Element    racine;
      private org.jdom.Document   document;
     
      private Document readFromString(String xmlString)
      {
        try
        {
          SAXBuilder builder = new SAXBuilder();
          return builder.build(new ByteArrayInputStream(xmlString.getBytes()));
        }
        catch(IOException e)
        {
          System.err.println("IOException readFromString: " + e.getMessage());
          return null;
        }
        catch (JDOMException e)
        {
          System.err.println("JDOMException readFromString: " + e.getMessage());
          return null;
        }
      }
      private void deleteElement(String elementName)
      {
        List listEtudiant  = racine.getChildren("etudiant");
        Iterator it = listEtudiant.iterator();
     
        while (it.hasNext())
        {
          Element courrant = (Element)it.next();
          if (courrant.getChild(elementName) != null)
          {
            courrant.removeChild(elementName);
     
            courrant.setName("Modifie");
          }
        }
      }
      private void testJDom()
      {
        document = readFromString(xmlInput);
        if (document == null)
        {
          System.err.println("Document = null");
          return;
        }
     
        System.out.print("===>Document avant");
        System.out.println(new XMLOutputter(Format.getPrettyFormat()).outputString(document));
     
        racine = document.getRootElement();
        deleteElement("prenoms");
     
        System.out.print("===>Document apres delete prenoms");
        System.out.println(new XMLOutputter(Format.getPrettyFormat()).outputString(document));
      }
      public static void main(String[] arg)
      {
        TestJDom test = new TestJDom();
        test.testJDom();
      }
    }

Discussions similaires

  1. Accéder un élément XML présent comme plugin dans une page HTML
    Par yo_haha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/02/2011, 19h32
  2. [SimpleXML] Accéder à un élément d'un fichier XML
    Par domishao dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/05/2009, 00h53
  3. [WebForms][2.0]Accéder aux élément DropDownlist via Javascript
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/10/2005, 15h01
  4. Est-il possible d'accéder à un élément grâce à sa position ?
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 21
    Dernier message: 30/09/2005, 08h18
  5. [debutant] [TOMCAT] Accéder à mes pages depuis internet
    Par Amnesiak dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 27/05/2005, 16h08

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