Bonsoir,

Pour un projet j'ai du écrire un parser pour parser un fichier XMLMusic.xml.
Dans le handler qui étend la classe DefaultHandler et que j'ai appellé PartitionHandler je récupère dans des instanciations de classe tels que Partition ou NoteSimple les données extraites du fichier xml. A présent dans le main j'aimerais pouvoir avoir accès à ces données qui sont dans l'instance de la classe partition mais je ne vois absolument pas comment faire. Quelqu'un aurait-il une idée? D'avance merci

Voici le main dans lequel j'aimerais voir les données parsée dans l'instance de partition:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public class mainParser {
      public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException {
 
 
 
        SAXParserFactory fabrique = SAXParserFactory.newInstance();
        SAXParser parseur = fabrique.newSAXParser();
 
        File fichier = new File("musicXML.xml");
        DefaultHandler gestionnaire = new PartitionHandler();
        parseur.parse(fichier, gestionnaire);
et le handler :

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
public class PartitionHandler extends DefaultHandler {
 
    private Partition partition;
    NoteSimple note;
 
    private boolean inPartitionlist, inPartition, inAuteur, inTitre, inNote,inDivision,inStep,inOctave, inDuration, inRest;
    private StringBuffer buffer;
 
    int cmpt=0;
  //
 
  /**  Parser name.  */
//protected static final String PARSER_NAME = "org.apache.xerces.parsers.SAXParser";
  //
  private  int indent_nb = 0, min_char_nb = 0, max_char_nb = 0;
  //
 
 
 
 
  public PartitionHandler(){
      super();
 
  }
 
  @Override
  public void startElement(String uri, String localname, String qName,Attributes attrs) throws SAXException {
 
 
 
      if(qName.equals("movement-title")){
 
          partition = new Partition();
          inTitre = true;
 
 
      }else{
          buffer = new StringBuffer();
          if (qName.equals("creator")){
 
                    inAuteur= true;
                    indent_nb++;
 
          }else if(qName.equals("part")){
 
              inPartition=true;
              indent_nb++;
 
          }else if(qName.equals("divisions")){
 
                inDivision=true;
                indent_nb++;
 
          }else if(qName.equals("note")){
           note = new NoteSimple();
           inNote=true;
           cmpt++;
//           partition.l.add(note);
          }else if(qName.equals("step")){
              inStep=true;
 
          }else if(qName.equals("octave")){
              inOctave=true;
          }else if(qName.equals("duration")){
              inDuration=true;
          }
//          }else{
//              throw new SAXException("Balise "+qName+" inconnue.");
//          }
      }
  }
 
 
 
 
    @Override
    public void endElement(String uri, String localName, String qName)throws SAXException{
 
 
        if(buffer!=null){
 
 
        if(qName.equals("movement-title")){
            partition.setTitre(buffer.toString());
            System.out.println(partition.getTitre());
            buffer = null;
            inTitre=false;
 
        }else if(qName.equals("creator")){
            partition.setAuteur(buffer.toString());
            System.out.println(partition.getAuteur());
 
 
            buffer = null;
            inAuteur=false;
 
        }else if(qName.equals("part")){
            inPartition = false;
 
        }else if(qName.equals("divisions")){
            partition.setDivision(Integer.parseInt(buffer.toString()));
            buffer = null;
            inDivision=false;
            System.out.println(partition.getDivision());
//        }else if(qName.equals("note")){
//            partition.l.get(0).
////        }else{
////            throw new SAXException("Balise "+qName+" inconnue.");
////	}
//    }
        }else if(qName.equals("note")){
            partition.l.add(note);
            inNote=false;
 
        }else if(qName.equals("step")){
                note.setStep(buffer.charAt(0));
                System.out.println(note.getStep());
                buffer=null;
                inStep=false;
        }else if(qName.equals("octave")){
                note.setOctave(Integer.parseInt(buffer.toString()));
                System.out.println(note.getOctave());
                inOctave=false;
                buffer=null;
        }else if (qName.equals("duration")){
            note.setDuration(Integer.parseInt(buffer.toString()));
            System.out.println(note.getDuration());
            inDuration=false;
            buffer = null;
        }
 
 
 
        }
 
    }