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 :

XML/Position Lecture et utilisation [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 confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut XML/Position Lecture et utilisation
    Bonjour à tous,
    Je suis débutante en Java.. Je dois lire une position dans un fichier xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <path>D:/Workspace/java/java_svn/eldoonEclipseProject/trash/PlcMgr.o</path>
        <gui>
          <position>10,10</position>    
          <size>10</size>
          <color>green</color>
        </gui>
    Je pense qu'il faut utiliser quelque chose dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import javax.swing.text.Position;
    private Position position;
    protected Position getPosition(){return this.position;}
    protected void setPosition(String position){...}
    ... mais je ne sais pas comment remplir les "...".
    Mon but serait de pouvoir afficher dans la console la position dans un premier temps (en séparant les 2 nombres: 10 et 10) puis de pouvoir l'utiliser par la suite, comme une position et non un string.

    Apres je dois faire la meme chose avec "color" et "size" mais je présume que ca va etre le meme système.

    Si quelqu'un avait une idée ou un bon lien

  2. #2
    Membre très actif Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut
    Le parsing est deja fait.

    En fait j'arrive à récupérer le name, le enable et le path (avec les 3 lignes mais ca coince à "position".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <component name="fichier" enable="true">
        <path>D:/Workspace/java/fichier.o</path>
        <gui>
          <position>10,10</position>
          <size>10</size>
          <color>green</color>
        </gui>
      </component>
    Je fais comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private String name = null;
    protected String getName(){return this.name;}
    protected void setName(String name){this.name = name;}
     
      public String toString(){
            return new StringBuffer("Name : ").append(name).toString();
    Mais en faisant ca avec position, ca me renvoie la valeur "null".

    Je voudrais gérer la valeur de position en tant que position en fait, et je ne sais pas trop comment m'y prendre.

  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
    On comprend pas comment tu lis ton XML.

    getName(), setName(), ça n'a rien à voir avec ton XML tout ça, comment tu relies les deux ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Par défaut
    Je lis le XML en faisant du parsing:

    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
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    public class XmlEldoonHandler extends DefaultHandler{
        //résultats de notre parsing
        private List<XmlComponent> xmlCompList;
        private XmlComponent xmlComponent;
        //flags nous indiquant la position du parseur
        private boolean inEldoonPrj, inComponent, inPath, inGui, inPosition, inSize, inColor;
        //buffer nous permettant de récupérer les données 
        private StringBuffer buffer;
     
        // simple constructeur
        public XmlEldoonHandler(){
            super();
        }
     
        //détection d'ouverture de balise
        public void startElement(String uri, String localName,
                String qName, Attributes attributes) throws SAXException{
            if(qName.equals("eldoon-prj")){
                xmlCompList = new LinkedList<XmlComponent>();
                inEldoonPrj = true;
            }else if(qName.equals("component")){
                xmlComponent = new XmlComponent();
                String strName = attributes.getValue("name");
                xmlComponent.setName(strName);
                try{
                    boolean val = Boolean.parseBoolean(attributes.getValue("enable"));
                    xmlComponent.setEnable(val);
                }catch(Exception e){
                    //erreur, le contenu de id n'est pas un boolean
                    throw new SAXException(e);
                }
                inComponent = true;
            }else {
                buffer = new StringBuffer();
                if(qName.equals("path")){
                    inPath = true;
                }else if(qName.equals("gui")){
                    inGui = true;
                }else if(qName.equals("position")){
                    inPosition = true;
                }else if(qName.equals("size")){
                    inSize = true;
                }else if(qName.equals("color")){
                    inColor = true;
                }else{
                    //erreur, on peut lever une exception
                    throw new SAXException("Balise <"+qName+"> inconnue.");
                }
            }
        }
        //détection fin de balise
        public void endElement(String uri, String localName, String qName)
                throws SAXException{
            if(qName.equals("eldoon-prj")){
                inEldoonPrj = false;
            }else if(qName.equals("component")){
                xmlCompList.add(xmlComponent);
                xmlComponent = null;
                inComponent = false;
            }else if(qName.equals("path")){
                xmlComponent.setPath(buffer.toString());
                buffer = null;
                inPath = false;
            }else if(qName.equals("gui")){
                //xmlComponent.setPrenom(buffer.toString());
                buffer = null;
                inGui = false;
            }else if(qName.equals("position")){
                //xmlComponent.setPrenom(buffer.toString());
                buffer = null;
                inPosition = false;
            }else if(qName.equals("color")){
                //xmlComponent.setPrenom(buffer.toString());
                buffer = null;
                inColor = false;
            }else if(qName.equals("size")){
                //xmlComponent.setPrenom(buffer.toString());
                buffer = null;
                inSize = false;
            }else{
                //erreur, on peut lever une exception
                throw new SAXException("Balise </"+qName+"> inconnue.");
            }          
        }
        //détection de caractères
        public void characters(char[] ch,int start, int length)
                throws SAXException{
            String lecture = new String(ch,start,length);
            if(buffer != null) buffer.append(lecture);       
        }
        //début du parsing
        public void startDocument() throws SAXException {
            System.out.println("Début du parsing");
        }
        //fin du parsing
        public void endDocument() throws SAXException {
            System.out.println("Fin du parsing");
            System.out.println("Resultats du parsing");
            for(XmlComponent p : xmlCompList){
                System.out.println(p);
            }
        }
     
        public List<XmlComponent> getComponents(){
            return xmlCompList;
        }
    }
    Dans un autre fichier je veux utiliser ce que j'ai lu.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public class XmlComponent{
        private String name = null;
        private boolean isEnable = false;
        private String path = null;
     
        private Position position;  
        private String size=null; 
        private String strColor = null;
        private String color =null; 
        private String x=null;
     
     
     
     
        protected XmlComponent(){}
     
        protected String getName(){return this.name;}
        protected boolean isEnable(){return this.isEnable;}
        protected String getPath(){return this.path;}
     
        protected Position getPosition(){return this.position;}
        protected String getSize(){return this.size;}
        protected String getColor(){return this.strColor;}
     
        protected void setName(String name){this.name = name;}
        protected void setEnable(boolean isEnable){this.isEnable = isEnable;}
        protected void setPath(String path){this.path = path;};
     
        protected void setSize(String size){this.size = size;};
        //protected void setPosition(String position){
     
        	//x=position;
        	//};
     
     
       // protected void setColor(String Color){this.color = color;};
     
     
     
      /*  protected void setColor(String strColor){
        	if  (strColor == "green"){
        		this.color = Color.GREEN;
        	}else if (strColor == "blue"){
        		this.color = Color.BLUE;
        	}else{
        		System.out.println("Color not allowed");
        	}
        	
        	//this.color = new ();
        }
     */
     
        public String toString(){
            return new StringBuffer("Name : ").append(name).append(", ")
                .append("isEnable : ").append(isEnable).append(", ").append("Path : ").append(path).append(", ").append("Position : ").append(position).append(", ").append("Size : ").append(size).append(", ").append("Color : ").append(strColor).append(", ").toString();
        }
     
    }
    Voici une partie du XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <component name="fichier" enable="true">
        <path>D:/Workspace/java/fichier.o</path>
        <gui>
          <position>10,10</position>
          <size>10</size>
          <color>green</color>
        </gui>
      </component>
    Position, Size et Color me renvoie la valeur "null". Je ne sais pas pourquoi.

  6. #6
    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 Ma29200 Voir le message
    Position, Size et Color me renvoie la valeur "null". Je ne sais pas pourquoi.
    Ben, parce que tu ne leur donnes jamais d'autre valeur, tiens.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. comment extraire une lettre sur xml sans toute fois utiliser la position()
    Par sonnyanderson dans le forum XML/XSL et SOAP
    Réponses: 13
    Dernier message: 13/08/2013, 22h19
  2. [XML][DOM] lecture caractères étrangers
    Par tigrou2405 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/10/2006, 18h00
  3. [lecture fichier] utilisation de hashtable
    Par maniolo dans le forum Langage
    Réponses: 6
    Dernier message: 12/10/2006, 16h51
  4. [VB6] Problème XML (position des zenfants)
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/06/2006, 17h46
  5. [XML file]Lecture - ecriture :Bienvenue à votre imagination
    Par Terminator dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2006, 22h53

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