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 :

[JAVA][XML] problème de conversion xml en txt


Sujet :

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

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut [JAVA][XML] problème de conversion xml en txt
    bonjour a tous,
    je me suis développer, sous netbeans en java jdk15, un petit programme qui extrait des informations depuis un site sous forme de xml, puis me convertir ce dernier en fichier txt.
    Mon problème, c'est qu'il semble que parfois mon programme plante me retournant cette erreur. J'entends par la que disons pendant un temps il va bien marcher (un mois, une semaine) et puis pendant un moment il me retourne toujours l'erreur ci-dessous:

    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
     
    run:
    [Fatal Error] xml%20notam%20source.xml:13744:1: An invalid XML character (Unicode: 0x2) was found in the element content of the document.
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
    	at java.base/java.io.PrintWriter.write(PrintWriter.java:559)
    	at My_Notam_Importer.MyWindow.jButton1ActionPerformed(MyWindow.java:216)
    	at My_Notam_Importer.MyWindow$1.actionPerformed(MyWindow.java:82)
    	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
    	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    	at java.desktop/java.awt.Component.processEvent(Component.java:6379)
    	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
    	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
    	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
    	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
    	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
    	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
    	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    BUILD SUCCESSFUL (total time: 6 minutes 9 seconds)
    Je comprends a peine de ce message d'erreur qu'il semble qu'une valeur nulle se trouve quelque part. Or je n'ai jamais modifié mon code qui marche "très bien" jusqu'ici.
    Comment pourrais-je corriger cette erreur, sachant que je ne maitrise pas l'information d'origine que j'extrais (celle du site web), qu'en plus mon fichier xml est créé normalement.

    donc j'imagine que le problème se pose au moment de convertir ce fichier xml en txt...
    J'apprécierais votre aide, sachant qu'en plus je suis pas très fort en programmation. Comment pourrais-je résoudre ce problème s'il vous plait ? en pj le xml en question

    Par avance merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello, désolé de ne pas avoir vu ce message plus tôt.

    Le véritable problème est en fait celui-ci :

    :13744:1: An invalid XML character (Unicode: 0x2) was found in the element content of the document.
    Et c'est confirmé quand on étudie le fichier XML joint. Au début de la ligne 13744 il y a un octet corrompu. Ce n'est pas acceptable en XML.

    XML n'existe que pour une seule raison : respecter des règles simples pour pouvoir les traiter simplement. De ce fait, quand ces règles ne sont pas respectées (ici l'octet corrompu), les fichiers sont inutilisables.

    Le fichier XML tel que tu ne le montres ne peut pas être considéré comme du XML. Il faudrait corriger ce problème d'octet corrompu, mais nous ne pouvons pas deviner d'où il vient. Il aurait fallu que tu nous expliques comment tu obtiens ce fichier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    bonsoir thelvin,

    a mon je m'excuse pour cette réponse tardive.

    mon programme va sur un site internet afin de récupérer les elements d'un html. puis il le converti en txt via le xml.

    espérant que cela aide.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    ... Je vois pas trop bien en quoi on pourrait t'aider plus avec de genre d'informations. Il aurait été malin de dire quelle partie de quel site web.

    Mais on peut au moins observer que HTML, ce n'est pas XML, et qu'une page HTML qui contient des octets corrompus, s’accommode plutôt bien de leur présence. Il y aura juste des caractères bizarres à la place des octets corrompus.

    Une chose que tu pourrais faire, c'est passer un filtre sur les données recueillies sur le site, pour en effacer tout octet corrompu avant de les mettre dans du XML.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    thelvin,
    voici en effet le site sur lequel je recupère le html et le convertit en xml. puis une fois le xml crée je transforme en txt.

    https://www.notams.faa.gov/common/nat.html?

    je serais en effet interressé pour l'application d'un filtre enlevant les "caracteres corrompu" auriez vous un exemple s'il vous plait ?

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    thelvin ,

    voici un autre exemple https://www.notams.faa.gov/dinsQuery...alMapAction.do en comparaison avec le lien précédent c'est de celui la que je récupère le html/xml

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    thelvin,
    apres relecture de vos réponses, je penses comprendre un peu mieux vos solutions que vous proposez avec, il est vrai le peu d'infomrations que je vous ai donné.

    dans l'une d'elle vous me suggérez de passer un filtre pouvant éliminer les caractères invalide a la création de mon xml.
    a vrai dire, je ne vois pas trop comment faire un tel filtre. Aussi et surtout je ne vois pas le caractère spécial en question dont vous me parlez (celui au début de la ligne 13744)

    pourriez vous m'aider s'il vous plait ?

  8. #8
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    D'après le message d'erreur il s'agit du code ASCII numéro 2 qui ne correspond pas a un caractère affichable. La plupart des codes ASCII inférieur à 32 ne sont pas valide ou produisent un comportement particulier.

    Une solution simple a cette erreur particulière serait de retirer les caractère avec une valeur inférieure à 32 autre que 7(tabulation), 10(nouvelle ligne) et 13 (retour chariot). Ceci dit il y a encore plein d'autre façon de produire un XML non valide, si tu ne sais pas pourquoi tu t'es retrouvé avec un fichier invalide en entrée, tu risques d'avoir d'autre problèmes.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Points : 45
    Points
    45
    Par défaut
    bonsoir et merci Uther pour cet élément de reponse.
    L'autre problème est que j'entends bien ce que vous me proposez comme solution mais eu égard a mon niveau, je ne vois pas comment la mettre en application.
    Auriez-vous une orientation complémentaire a m'apporter s'il vous plait?

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Par exemple :

    - charger la totalité du document dans une String.
    - créer un StringWriter
    - copier les chars de la String, un par un dans le StringWriter
    - mais ne pas copier les chars qu'on veut enlever (ne pas les copier a donc pour effet de les enlever du résultat)
    - obtenir la String résultante du StringWriter. Elle ne contient pas les chars corrompus.

    En réalité pour une solution plus générale, il faudrait :
    - vérifier la liste complète des caractères interdits dans XML
    - utiliser des codePoints et pas des chars, ce qui complique tout

    Mais la première solution devrait suffire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de conversion caractères bean/xml - xml/bean
    Par Piloufesse dans le forum Services Web
    Réponses: 3
    Dernier message: 23/04/2008, 17h06
  2. [JDOM] java & XML, problème de parsing avec JDOM
    Par OreillePointue dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 11/01/2008, 10h17
  3. [XSLT] Conversion xml vers txt ou mdb etc
    Par narodar dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/06/2006, 14h31
  4. [FOP] Problème de conversion xml/xsl vers pdf
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2006, 10h41

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