Salut a tous

J'ai creer un parseur SAX qui extraire les donnee (element et leurs attributs) et les affiches dans la sortie standard(console)
j'ai ajoutee ainsi quelques lignes pour recuperer ces donnees dans un matrice pour les utiliser dans d'autres algorithmes , mais la compilation a generer des erreurs

voici le code : pour le test


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
 package parseuravecsax;
 
//Parse un document XML en java avec L'API SAX
//on importe les APIs necessaire pour l'analyse du XML
import javax.swing.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
//pour l'acces au fichierS
import java.io.*;
 
public class AnalyseSAX extends DefaultHandler
{
//declaration d'un matrice et les compteurs
    public String[][] ELEMENTS_ATTRIBUTS; //tableau pour recuperer les donnees extraitent du fichier
    int x = 0;
    int y = 0;
 
    //Methode principale 
    public void Parseur_fichier(String nomFichier)
    {
 
        //si le fichier qui est passe en argument est oublie --->erreur
        if (nomFichier.isEmpty() == true)
        {
            System.out.println("erreur, Le fichier est endommagee ou il n'existe pas");
            System.exit(1);
        }
        //on lance l'analyseur avec le fichier xml en parametre
        DefaultHandler handler = new AnalyseSAX();
        SAXParserFactory factory;
        factory = SAXParserFactory.newInstance();
        try
        {
            SAXParser saxparser = factory.newSAXParser();
            saxparser.parse(new File(nomFichier), handler);
        }
        catch (Throwable t)
        {
            //Si on a une erreur pendant l'analyse
            t.printStackTrace();
            System.exit(1);
        }
//        System.exit(0);
    }
//fin de L'analyse
    //les methodes qui suivnet sont appelees automatiquement par l'analyseur 
    //lorsqu'un evenement  est detectee dans le fichier xml
    @Override
    public void startDocument() throws SAXException
    {
        System.out.println("debut du document");
    }
 
    @Override
    public void endDocument() throws SAXException
    {
        System.out.println("fin du document");
    }
 
    @Override
    public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException
    {
        String eName = sName;
        if ("".equals(eName))
        {
            eName = qName;
        }
        System.out.println("balise ouverte:" + eName);
 
// recuperation de L'element trouvee dans le tableau --->ligne x colonne 0 
        ELEMENTS_ATTRIBUTS[x][0].concat(eName);
        x += 1;  
 
        if (attrs != null)
        {
            //Listage des attributs
            if (attrs.getLength() != 0)
            {
                System.out.println("Listage des parametres pour la balise " + eName + ":");
            }
            for (int i = 0; i < attrs.getLength(); i++)
            {
                String aName = attrs.getLocalName(i);//recuperation du nom de l'attribut
                if ("".equals(aName))
                {
                    aName = attrs.getQName(i);
                }
                System.out.println(" " + aName + "=\"" + attrs.getValue(i) + "\"");
 
//recuperation des valeurs des attributs dans les colonnes de tableau ---> par exemple ligne 1 colonne y              
                ELEMENTS_ATTRIBUTS[x][y].concat(attrs.getValue(i));
                y = i;
            }
        }
    }
 
    @Override
    public void endElement(String namespaceURI, String simpleName, String qualifiedName) throws SAXException
    {
        String nomElement = simpleName;
        if (nomElement.equals(""))
        {
            nomElement = qualifiedName;
        }
        System.out.println("Balise fermée : " + nomElement);
    }
 
    @Override
    public void characters(char[] ch, int start, int end) throws SAXException
    {
        String chaine = new String(ch, start, end);
        chaine = chaine.trim();
        if (!chaine.equals(""))
        {
            System.out.println("donnees : " + chaine);
        }
    }
 
    public void affichage_tab()
    {
        System.out.println("");
        System.out.println("le tableau");
        for (int i = 0; i < ELEMENTS_ATTRIBUTS.length; i++)
        {
            for (int j = 0; j < ELEMENTS_ATTRIBUTS[i].length; j++)
            {
                System.out.println(ELEMENTS_ATTRIBUTS[i][j]);
            }
        }
    }
}
....

pour les lignes en rouge L'erreur est provoquee car je n'ai pas initialiser le tableau [NULLPOINTER EXCEPTION..]
apres l'initialisation le programme marche mais apres l'execution de la methode en vert(affichage_tab) le tableau s'affichera avec les valeurs initials de la declaration faite

une solution.....?