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 :

Obtenir l'élément suivant du fichie XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Par défaut Obtenir l'élément suivant du fichie XML
    Bonjour,

    J'ai un fichier XML qui se présente sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Records>
    <Record>
    <Row A="ecole" B="20-03-2014" C="12:00:00 AM" D="STN40" E="STN32" F="0" G="Boxes MC"/>
    </Record>
    <Record>
    <Row A="ecole" B="20-03-2014" C="12:00:00 AM" D="STN28" E="STN50" F="0" G="Boxes MC"/>
    </Record>
    <Record>
    <Row A="ecole" B="20-03-2014" C="12:00:00 AM" D="STN26" E="STN75" F="0" G="Boxes MG"/>
    </Record>
    <Record>
    <Row A="ecole" B="20-03-2014" C="12:01:00 AM" D="STN40" E="STN30" F="0" G="Boxes MG"/>
    </Record>
    Et j'utilise une boucle for pour itérer dans tout mon fichier. Cependant je n'arrive pas à utiliser un fonction qui me permet d'avoir le noeud suivant. Quand je met "Record", cela me dit que ce n'est pas un noeud.. je ne comprend pas. Mais cela sera plus facile de voir mon erreur avec un code

    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
    float calcNextOrderTime(String current_location) throws JDOMException, IOException
        {
            RetreivedHashmap map = new RetreivedHashmap();
            TestDeserialization test = new TestDeserialization();
            float time = 0;
            float t1 = 0;
            float t2 = 0;
            List <Element> record = test.getXMLressources().getChildren("Record");
            for (Element rec : record) {
                List <Element> Row = rec.getChildren("Row");
                Iterator<Element> it2 = Row.iterator(); 
                Element row = it2.next();
                
                String next_location = row.getAttributeValue("E");
                current_order = (current_location+","+next_location);
                t1 = map.hmap.get(current_order);
                System.out.println("Order : " + current_order +" --> time for the order: "+ t1);
                
    //Jusqu'ici tout va bien, mais c'est juste après, quand j'appelle le node que ya un probleme
                
    //            Node rootElement = getNextSiblingElement("Record"));
    
                String go_next_order = (row.getAttributeValue("E")+","+getNextSiblingElement("Record")); // Cette ligne me dit incompatible types: String cannot be converted to Node
    
    //            t2 = map.hmap.get(go_next_order);
    //            System.out.println("Order : " + go_next_order +" --> time for the order: "+ t2);
                
            }
            time = t1+t2;
            return time;
        }
    
          /** Finds and returns the next sibling element node. */
        public static Element getNextSiblingElement(Node node)
        {
            TestDeserialization test = new TestDeserialization();
            Element root = test.root;
            // search for node
            Node sibling = node.getNextSibling();
            while (sibling != null) {
                if (sibling.getNodeType() == Node.ELEMENT_NODE) {
                    return (Element)sibling;
                }
                sibling = sibling.getNextSibling();
            }
    
            // not found
            return null;
    
        }
    Le fichier XML est lu dans un autre classe ( TestDeserialization)
    Je dois utiliser l'élément suit (Record) dans l'itération juste avant de la boucle for.

    Merci pour l'aide que vous pourrez m'apporter.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // Cette ligne me dit incompatible types: String cannot be converted to Node
    Et... ça ne te semble pas normal ? Si la méthode prend un Node en paramètre, il ne faut pas lui donner une String mais un Node.

    Ceci étant dit il a vraiment aucun sens ton bout de code. Les Node ça existe pas en JDOM.
    Et l'itérateur qui sert à rien, et le fait de boucler sur les éléments tout en allant en plus chercher le suivant à l'intérieur de la boucle... C'est n'importe quoi.

    Tu t'éclaircirais un peu les idées si tu chargeais tout le XML dans des objets d'abord, et que tu calculais les relations entre ces objets, ensuite.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 11
    Par défaut
    Ahah oui tu as raison mais crois moi j'avais déja cherché une solution à ce problème du String en node, etc.. mais ce que je ne savais pas c'était pour Jdom et le node, donc merci pour cette information.

    Je pense que tu n'a pas compris ou était le but de ce que je fais.

    J'ai besoin de 2 temps ( celui qui va de "D" à "E" dans le XML + celui qui va de "E" du meme élément au "D" de l'élément suivant). Les temps sont évidemment stockés dans un hashmap.

    Comment ca charger le XML dans des objets d'abord ? j'ai chargé le XML comme suit dans la classe TestDeserialization:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Element getXMLressources() throws JDOMException, IOException
        {
            SAXBuilder sxb = new SAXBuilder();
            // jdomDocument is the TimeCalcul Object
            Document Document = sxb.build(xmljobmatrix);
            root = Document.getRootElement();
            return root;
        }

Discussions similaires

  1. [XSL][débutant]trié l'ordre des éléments d'un fichier xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/04/2006, 10h37
  2. Réponses: 17
    Dernier message: 21/12/2005, 00h35
  3. Récupération des éléments d'un fichier xml en flux retour
    Par opeo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/11/2005, 10h33
  4. Suivant & Précédant en XML / XSL
    Par helyos dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/06/2004, 12h06
  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