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 :

[Parser] pb exec sur window / Unix


Sujet :

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

  1. #1
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut [Parser] pb exec sur window / Unix
    Bonjour à tous,

    J'ai actuellement le problème suivant lorsque j'exécute mon programme java sous Aix.
    Mon prog est sensé parser un fichier XML pour standardiser ses informations. Lorsque mon prog tourne sous Window (mon poste de dev), rien d'anormal, les valeurs des tags sont bien retrouvées et standardisée.
    Seulement lorsque ce même programme est installé sous AIX, certaines valeurs de tag ne sont pas "retrouvée" alors qu'elle sont présente dans le fichier XML en entrée... je ne comprends pas comment un prog peut ainsi zapper des valeurs d'un OS à un autre sachant que la machine virtuelle java est de la même version !

    Pour un peu plus de compréhension, voici un bon de mon fichier XML en entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <attribs>
    <attrib name="toto">119</attrib>
    <attrib name="tata">108</attrib>
    <attrib name="tutu">10</attrib>
    <attrib name="titi">1</attrib>
    <attrib name="tete">121</attrib>
    </attribs>
    Et suite à la standardisation des mes champs, voici le XML que j'obtiens en sortie sous Unix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <attribs>
    <attrib name="toto"></attrib>
    <attrib name="tata">108</attrib>
    <attrib name="tutu">10</attrib>
    <attrib name="titi">1</attrib>
    <attrib name="tete">121</attrib>
    </attribs>
    La valeur d'un des tag est manquante, alors que sous window, le xml de sortie reste bien le même qu'en entrée.

    Mon parser fonctionne comme tout parser digne de ce nom, en appellant les méthodes startElement, characters et endElement selon le type de balise qu'il rencontre.
    Après avoir mis quelques traces dans mon programme pour comparer l'exécution entre window et unix, je m'apercoit que pour l'attribut "toto", le parser n'appelle pas la méthode "character" sous unix, alors que sous window oui. C'est pourquoi finalement la valeur n'est pas reprise dans le xml de sortie.

    Si certains d'entre vous on compris mes explications, ma question est donc de comprendre pourquoi sous unix, le parser ne détecte pas qu'il se trouve dans un tag "attrib" et n'appelle pas la méthode character associée... alors que sous window tout se déroule normalement ?

    Certains d'entre vous ont peut etre déjà eu une différence de parsing sous window / unix ?

    Voici vite fais quelques bout de code de mon parser :
    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
     
    scanner = new NplByteScanner(new FileInputStream(theFile), getConfig());
    handler.startDocument(); 
    // --- Roll up on all tag element
    while (true) 
    {			
     
    	scanner.nextElement(true);
    	if (scanner.sgmlElement.qName == null) break;
    	if (scanner.isEOF()) 
    	{
    		handler.endDocument(); 
    		break;
    	} 
    	if (scanner.pcdata.length > 0 && !(new String(scanner.pcdata)).trim().equalsIgnoreCase("") )
    	handler.characters(scanner.pcdata, 0, scanner.pcdata.length);
     
    	if (scanner.sgmlElement.state == NplElement.TAG_STARTING)
    		handler.startElement(scanner.sgmlElement.qName, scanner.sgmlElement.attributes);
     
     
    	if (scanner.sgmlElement.state == NplElement.TAG_ENDING)
    		handler.endElement(scanner.sgmlElement.qName);
     
     
    }//end-while
    Le fichier xml en entrée est en binaire, d'ou le fait que mon parser utiliser un byteScanner (maison).


    Merci à ceux qui se pencheront sur mon problème.

  2. #2
    kij
    kij est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 362
    Par défaut
    Re,

    J'ai investigué un peu plus sur le problème, et il se trouve que les valeurs qui disparaissent sont les suivantes : 2, 22, 222, 7 et 77 (les valeurs de l'exemple donné plus haut ne sont pas celles qui bug réellement)

    Les valeurs Hexa pour ces chiffres en UTF-8 sont les suivantes :
    2 = 00 32
    22 = 00 32 00 32
    222 = 00 32 00 32 00 32
    7 = 00 37
    77 = 00 37 00 37

    J'en conclu qu'il y a donc un problème lorsque les valeurs de mes champs ont pour valeur que des 2 ou que des 7... mais la grande question reste POURQUOI ? ^^

    EDIT : J'ai essayer de faire passer la valeur '33' dans un de ces champs pour voir si c'est bon, et c'est le cas... j'en conclu donc que j'ai fais un programme raciste envers les chiffres 2 et 7 sous unix

    Quelqun peut-il m'aider à y voir plus clair ? Merci.

Discussions similaires

  1. commande exec sur windows depuis linux
    Par trent94 dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2011, 13h51
  2. Lancer un script Unix en passant par Cygwin sur Windows
    Par damien24610 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 18/06/2009, 23h55
  3. lancer .cmd sur Windows depuis Unix.
    Par crdcrd dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 29/01/2009, 16h58
  4. pb d'installation d'Oracle 9 sur windows 2000
    Par condor dans le forum Oracle
    Réponses: 1
    Dernier message: 14/12/2006, 11h40
  5. Réponses: 4
    Dernier message: 29/08/2005, 17h42

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