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 :

Longueur et traitement [SAX]


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
    Août 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 37
    Par défaut Longueur et traitement
    Bonjour.

    Je récupère un projet qui implémente SAX pour parser un fichier XML. On a constaté une anomalie bizarre qui semblait se corriger en réduisant la longueur des données.

    Après investigation, j'ai trouvé l'anomalie: on a un fichier XML à balises diverses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <toto>
    <titi></titi>
    <tata></tata>
    </toto>
    <tutu></tutu>
    Sauf qu'en fait, le XML généré qu'on doit lire est structuré (pour le bloc qui me dérange)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <BALISE>
    <1>zegzg</1>
    <10>zegzg</10>
    <11>zegzg</11>
    <14>zegzg</14>
    <2>zegzg</2>
    </BALISE>
    Car les devs ont collé, en nom de balise, l'id primaire d'une BDD! Donc là, au parsing, les devs côté lecture ont récupéré que BALISE.
    Seulement le souci, c'est que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.xml.sax.ContentHandler#characters
    récupère un char[] en entrée, alors que le buffer complet entre les balises BALISE est bien plus important.

    Par acquis de conscience, j'ai vérifié la longueur de ce "buffer" char, il est de 2048...

    Mes questions pour m'affranchir de ça:
    1° y a t il un moyen que ce "buffer" soit revu pour être plus grand?
    2° Ou bien dois je revoir le code en sachant que leur système foireux de balises n'est pas à faire évoluer dans l'immédiat
    3° suis je bloqué?

  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 magellan94 Voir le message
    Sauf qu'en fait, le XML généré qu'on doit lire est structuré (pour le bloc qui me dérange)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <BALISE>
    <1>zegzg</1>
    <10>zegzg</10>
    <11>zegzg</11>
    <14>zegzg</14>
    <2>zegzg</2>
    </BALISE>
    Car les devs ont collé, en nom de balise, l'id primaire d'une BDD! Donc là, au parsing, les devs côté lecture ont récupéré que BALISE.
    Je ne comprends pas trop, je suppose que tu es au courant que ceci n'est pas du XML. Un < commence forcément une balise, et un nom de balise ne peut pas commencer par un chiffre.

    Citation Envoyé par magellan94 Voir le message
    1° y a t il un moyen que ce "buffer" soit revu pour être plus grand?
    Ça dépend du parseur, mais en général, non. De toute façon ce n'est pas là qu'il faut regarder.

    Citation Envoyé par magellan94 Voir le message
    2° Ou bien dois je revoir le code en sachant que leur système foireux de balises n'est pas à faire évoluer dans l'immédiat
    Non, tu dois revoir le code en pensant que characters() peut être appelé plus d'une fois à l'intérieur d'une même balise, pour le cas où un seul appel ne suffisait pas à transmettre tous les caractères, et qu'il en faut donc d'autres pour transmettre les suivants.

    C'est ce que tu aurais dû faire depuis le début. Pas seulement pour cette raison, mais aussi au cas où des sous-balises ignorables apparaissent comme contenu mixte.
    Bref, il faut toujours faire comme ça.

    Citation Envoyé par magellan94 Voir le message
    3° suis je bloqué?
    Non, c'est une situation très connue. Tu ne savais pas, c'est tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 37
    Par défaut
    Merci pour ces réponses. je suis passé par un stringbuffer pour concaténer, et ça roule

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

Discussions similaires

  1. Traitement tableaux de caractères de longueur fixe
    Par masoum dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 31/10/2012, 07h34
  2. [combinatoire] combinaisons de toutes longueur
    Par Toorop dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/02/2007, 16h08
  3. Rafraichissement de la fenetre pendant le traitement
    Par Bobx dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/02/2003, 15h13
  4. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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