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 :

Extraire les données d'un fichier XML (log)


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
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut Extraire les données d'un fichier XML (log)
    Bonjour, j'ai besoin d'extraire les informations contenus dans un fichier log, créé automatiquement par un programme que j'ai fais en Java, pour l'utiliser après pour des statistiques.
    J'ai tester des codes en java mais j'ai rencontré des problèmes.

    Comment se faire pour traiter un fichier comme ça?Il contient plusieurs blocs xml.
    Le nom du fichier est myLog.txt
    Il est en XML et sous la forme suivante:

    Code xml : 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
     
    <?xml version="1.0" encoding="windows-1252" standalone="no"?>
    <!DOCTYPE log SYSTEM "logger.dtd">
    <log>
    <record>
      <date>2012-05-17T13:01:34</date>
      <millis>1337252494404</millis>
      <sequence>0</sequence>
      <logger>com.mycompany</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message1</message>
    </record>
    <record>
      <date>2012-05-17T13:01:34</date>
      <millis>1337252494440</millis>
      <sequence>1</sequence>
      <logger>com.mycompany</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message2</message>
    </record>
    </log>
    <?xml version="1.0" encoding="windows-1252" standalone="no"?>
    <!DOCTYPE log SYSTEM "logger.dtd">
    <log>
    <record>
      <date>2012-05-17T13:05:41</date>
      <millis>1337252741283</millis>
      <sequence>0</sequence>
      <logger>com.mycompany</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message1</message>
    </record>
    <record>
      <date>2012-05-17T13:05:41</date>
      <millis>1337252741317</millis>
      <sequence>1</sequence>
      <logger>com.mycompany</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message2</message>
    </record>
    </log>
    <?xml version="1.0" encoding="windows-1252" standalone="no"?>
    <!DOCTYPE log SYSTEM "logger.dtd">
    <log>
    <record>
      <date>2012-05-17T13:07:56</date>
      <millis>1337252876705</millis>
      <sequence>0</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message1</message>
    </record>
    <record>
      <date>2012-05-17T13:07:56</date>
      <millis>1337252876738</millis>
      <sequence>1</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message2</message>
    </record>
    </log>

  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
    Ça c'est pas un fichier .xml .
    Un fichier XML a :
    - Une seule (ou zéro) déclaration XML
    - Un seul (ou zéro) doctype
    - Un seul élément racine.

    Pour traiter un fichier comme le tien, il faut d'abord l'éclater en plusieurs fichiers XML, chaque fois que tu tombes sur une déclaration XML.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    oui c'est vrai j'ai corrigé comme ça:
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <log>
    <record>
      <date>2012-05-18T16:32:12</date>
      <millis>1337351532521</millis>
      <sequence>0</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message1</message>
    </record>
    <record>
      <date>2012-05-18T16:32:12</date>
      <millis>1337351532557</millis>
      <sequence>1</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>fonction1</method>
      <thread>10</thread>
      <message>voila le message2 de la fonction1</message>
    </record>
    <record>
      <date>2012-05-18T18:15:33</date>
      <millis>1337357733396</millis>
      <sequence>0</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>main</method>
      <thread>10</thread>
      <message>message1</message>
    </record>
    <record>
      <date>2012-05-18T18:15:33</date>
      <millis>1337357733431</millis>
      <sequence>1</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>fonction1</method>
      <thread>10</thread>
      <message>voila le message2 de la fonction1</message>
    </record>
    <record>
      <date>2012-05-18T18:46:09</date>
      <millis>1337359569682</millis>
      <sequence>1</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>fonction1</method>
      <thread>10</thread>
      <message>voila le message2 de la fonction1</message>
    </record>
    <record>
      <date>2012-05-18T18:46:22</date>
      <millis>1337359582087</millis>
      <sequence>1</sequence>
      <logger>mon_projet</logger>
      <level>INFO</level>
      <class>test1.test1</class>
      <method>fonction1</method>
      <thread>10</thread>
      <message>voila le message2 de la fonction1</message>
    </record>
     
    </log>
    mais il me reste un problème que lorsque je fais ce code :
    Code java : 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
     
    package convertion2;
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.filter.*;
    import java.util.List;
    import java.util.Iterator;
    import org.jdom.input.SAXBuilder;
     
    import java.util.*;
     
     
    public class convertion2 {
     
    	static Document document;
        static Element racine;
        public  convertion2() {};
    	public static void main(String[] args) {
     
     
    	     SAXBuilder sxb = new SAXBuilder();
    	     try
              {
     
    	         document = sxb.build(new File("log.xml"));
              }
    	      catch(Exception e){}
     
    	      racine = document.getRootElement();
     
    	      List<?> listEtudiants = racine.getChildren("record");
    	      Iterator<?> i = listEtudiants.iterator();
    	      while(i.hasNext())
    	      {
     
    	         Element courant = (Element)i.next();
     
    	         System.out.println(courant.getChild("level").getText());
    	      }
     
    	}
    }
    Il m'affiche ce message d'erreur:
    Exception in thread "main" java.lang.NullPointerException
    at convertion2.convertion2.main(convertion2.java:41)


    Je comprend pas d'ou vient le pproblème et comment le corriger.
    Merci d'avance

  4. #4
    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
    Tu as une erreur à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document = sxb.build(new File("log.xml"));
    Du coup la variable document n'est pas affectée, et elle reste null. Donc ça fait NullPointerException quand tu essaies d'y accéder.

    Tu as fait quelque part un try / catch dont le catch { } est vide. Il ne faut pas faire ça, ça empêche de lire les messages d'erreur.

    Contente-toi de mettre throws Exception dans ta méthode main(), et enlève les try / catch de ce genre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 21
    Par défaut
    Super,
    je peux voir mes erreurs maintenant, j'ai corrigé et ça marche.
    Merci beaucoup.

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

Discussions similaires

  1. extraire les données d'un fichier.xml en Listes
    Par Hatixhe dans le forum Caml
    Réponses: 15
    Dernier message: 13/10/2013, 16h48
  2. extraire les données d'un fichier xml avec xmlspy
    Par mouna1 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/06/2009, 13h50
  3. Extraire les données d'un fichier LOG
    Par sql92 dans le forum JDBC
    Réponses: 1
    Dernier message: 10/03/2008, 10h22
  4. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01
  5. [](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

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