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 :

Parse d'un fichier avec des '<'


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
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut Parse d'un fichier avec des '<'
    Bonjour,

    Je dois parser un fichier tiré d'un forum en JAVA et j'utilise SAX
    J'arrive a séparer les fils de discussion et les messages, mais ! je ne voudrais pas interpréter le contenu des messages.

    Je m'explique, dans les messages, j'ai, par exemple, ' x<k' . Lors du parse, SAX va considérer <k comme une balise et me dire que le fichier xml est mal formé -> exception !

    Ma question est donc de savoir si c'est possible de ne pas interpréter le contenu entre les balises de messages, <MSG> ... </MSG> ?

    Ou alors, une autre solution pour résoudre mon problème.

    Autre chose, mon fichier étant très gros (> 2Mo) je ne peux pas utiliser JDOM..
    Merci d'avance!

    Alban

  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
    Citation Envoyé par bamby44 Voir le message
    Je m'explique, dans les messages, j'ai, par exemple, ' x<k' . Lors du parse, SAX va considérer <k comme une balise et me dire que le fichier xml est mal formé -> exception !
    C'est normal, il l'est.

    Ma question est donc de savoir si c'est possible de ne pas interpréter le contenu entre les balises de messages, <MSG> ... </MSG> ?
    Pas implicitement, non.

    Mais si tu modifies ces balises pour qu'elles deviennent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <MSG><![CDATA[ ... ]]></MSG>
    ça ça le fera. Cette balise CDATA échappe tout son contenu, sans qu'il soit parsé (à l'exception de ]]>).

    Autre possibilité : remplacer x<k par x&lt;k

    Autre chose, mon fichier étant très gros (> 2Mo) je ne peux pas utiliser JDOM..
    C'est minuscule. À moins que tu aies besoin d'en charger des centaines en même temps, JDOM est parfaitement utilisable. Mais bon, JDOM n'est pas plus apte que SAX à résoudre ton problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ton fichier n'est clairement pas du XML, c'est quoi alors?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ton fichier n'est clairement pas du XML, c'est quoi alors?
    Bonjour,

    Notre TP nous impose un fichier texte précis. C'est quand même du XML mais avec une DTD qui serait la suivante (non donnée par le prof) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!ELEMENT FORUM (FIL*) >
    <!ELEMENT FIL (MSG*) >
    <!ATTLIST FIL TITRE #PCDATA #REQUIRED>
    <!ELEMENT MSG (#PCDATA)>
    <!ATTLIST MSG
        AUTEUR #PCDATA #REQUIRED
        DATE #PCDATA #REQUIRED >
    nous avons rajouté une balise globale <FORUM> dans lequel nous avons nos fils. Cette balise n'était pas dans notre fichier d'origine. mais je ne sais pas si nous avons le droit de modifier ce fichier.

    Voici un extrait du fichier texte à parser (qui soulève l'erreur) :
    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
    <FIL TITRE="Affichage de combinaisons">
      <MSG AUTEUR="Mikel" DATE="Dim 2 jan 2005 10:59">
        Bonjour à tous, et bonne année!
     
        Je cherche un algorithme capable d'afficher toutes les combinaisons
        possibles  de m éléments pris dans un ensemble de n éléments.
        n <=30 et bien sûr m<=n..
        Pas de problème jusqu'à n=5 ou 6, mais ne n'ai pas réussi à généraliser....
     
        Ex: soit 4 objets {a, b, c,d}
        si m=4 --> on affiche les combinaisons de 4 objets (abcd)
        si m=3 --> on affiche les combinaisons de 3 objets (abc), (acd), (bcd)
        si m=2 --> on affiche les combinaisons de 2 objets (ab), (ac), (ad), (bc),
        (bd), (cd)
     
        Merci pour vos conseils!
     
        NB: j'utilise VBA Excel pour mon application
     
        Cordialement, Mikel
      </MSG>
      <MSG AUTEUR="Jean-Marc Bourguet" DATE="Dim 2 jan 2005 11:08">
        http://sunburn.stanford.edu/~knuth/news.html
     
        Voir Previews of Volume 4.  Tu devrais y trouver plus que ce que tu ne
        veux.
     
        A+
      </MSG>
    </FIL>
    Voici l'erreur obtenue :
    org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup

    merci,

    Mathieu

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    d'ou viens ce "xml". De votre prof? Si oui, renvoyez le lui, ce n'est PAS du xml! du XML ce serait ç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
    <fil titre="Affichage de combinaisons">
      <msg auteur="Mikel" date="Dim 2 jan 2005 10:59">
        <![CDATA[
        Bonjour à tous, et bonne année!
     
        Je cherche un algorithme capable d'afficher toutes les combinaisons
        possibles  de m éléments pris dans un ensemble de n éléments.
        n <=30 et bien sûr m<=n..
        Pas de problème jusqu'à n=5 ou 6, mais ne n'ai pas réussi à généraliser....
     
        Ex: soit 4 objets {a, b, c,d}
        si m=4 --> on affiche les combinaisons de 4 objets (abcd)
        si m=3 --> on affiche les combinaisons de 3 objets (abc), (acd), (bcd)
        si m=2 --> on affiche les combinaisons de 2 objets (ab), (ac), (ad), (bc),
        (bd), (cd)
     
        Merci pour vos conseils!
     
        NB: j'utilise VBA Excel pour mon application
     
        Cordialement, Mikel
      ]]></msg>
      <msg auteur="Jean-Marc Bourguet" date="Dim 2 jan 2005 11:08">
        http://sunburn.stanford.edu/~knuth/news.html
     
        Voir Previews of Volume 4.  Tu devrais y trouver plus que ce que tu ne
        veux.
     
        A+
      </msg>
    </fil>



    ou ç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
     
    <fil titre="Affichage de combinaisons">
      <msg auteur="Mikel" date="Dim 2 jan 2005 10:59">
        Bonjour à tous, et bonne année!
     
        Je cherche un algorithme capable d'afficher toutes les combinaisons
        possibles  de m éléments pris dans un ensemble de n éléments.
        n &lt;=30 et bien sûr m&lt;=n..
        Pas de problème jusqu'à n=5 ou 6, mais ne n'ai pas réussi à généraliser....
     
        Ex: soit 4 objets {a, b, c,d}
        si m=4 --&gt; on affiche les combinaisons de 4 objets (abcd)
        si m=3 --&gt; on affiche les combinaisons de 3 objets (abc), (acd), (bcd)
        si m=2 --&gt; on affiche les combinaisons de 2 objets (ab), (ac), (ad), (bc),
        (bd), (cd)
     
        Merci pour vos conseils!
     
        NB: j'utilise VBA Excel pour mon application
     
        Cordialement, Mikel
      </msg>
      <msg auteur="Jean-Marc Bourguet" date="Dim 2 jan 2005 11:08">
        http://sunburn.stanford.edu/~knuth/news.html
     
        Voir Previews of Volume 4.  Tu devrais y trouver plus que ce que tu ne
        veux.
     
        A+
      </msg>
    </fil>
    Si le xml n'est pas valide, tu ne pourra utiliser aucune des libraires xml fournies en standard. Et pour cause, les spécification xml OBLIGENT les parseur xml à s'arreer avec un erreur dès qu'ils rencontrent un xml mal formé. Un "parseur" que serait laxiste ne serait plus un parseur.


    Votre TP mentionne-t-il "xml" ? ou juste uqe vous devez parser ce fichier?

    Dans le premier cas, si xml est mentionné, le vichier que vous avez n'est pas correct au regard de l'énoncé, clarifier avec le prof
    Dans le second cas, vous oubliez tout parseur xml, voitre prof vous a juste filé un fichier qui me semble être du SGML (jamais travaillé avec, j'en suis pas certains à 100%) qui ressemble à du xml mais est plus vaste. Il autorise notament les fermetures implicites de balise. Mais je ne suis même pas sur que ton "<" soit uatorisé même en SGML

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 151
    Par défaut
    Désolé pour la confusion avec le XML, disons que c'est du pseudo-xml. le fichier est une archive d'un forum.

    Le fichier donné par le prof est un fichier texte au format txt.

    Voici les informations que l'on a sur le fichier texte :
    Les messages d’un forum sont organisés par fil de discussion correspondant à un ensemble de messages
    répondant à une demande originelle. Un fil de discussion se distingue par un intitulé, chaque message
    d’un fil étant essentiellement identifié par son auteur et sa date de rédaction.
    Vous trouverez sur Madoc une archive contenant une sélection des messages postés sur le forum Usenet
    fr.comp.algorithmes depuis janvier 2005. Cette archive comporte des balises permettant de faire ressortir
    les 2981 messages, répartis en 383 fils et échangés par 489 auteurs, qu’elle comporte. Prenez connaissance
    de ces balises et familiarisez-vous avec la structure de ce document. Une étape de votre travail consistera
    à écrire un analyseur syntaxique capable d’extraire chaque message d’un tel fichier.
    Donc pour nous, impossible d'utiliser les parseurs de XML apparemment. Est-on obligé de parser le fichier texte ligne par ligne ?

Discussions similaires

  1. [ API JDIC ] Ouvrir un fichier avec des paramètres
    Par macmanus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/05/2007, 15h32
  2. [XSL] Problème de parse d'un fichier avec Namspaces
    Par mpereg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/02/2007, 19h24
  3. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 17h12
  4. Réponses: 6
    Dernier message: 29/11/2006, 11h56
  5. Réponses: 1
    Dernier message: 31/10/2006, 15h06

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