Bonjour à tous,
j'ai un fichier XML que j'aimerais parser avec SAX.
J'ai donc défini une classe qui étend DefaultHandler afin de parser ce document.
Cependant, j'aimerais que lors de la détection d'une certaine balise, je délègue le parsing à un autre handler qui s'occupera de parser cette balise.
J'ai par exemple le fichier XML suivant :
J'ai donc créé une classe dérivant DefaultHandler qui parse les 1eres balises. Cependant, j'aimerais que le contenu situé entre les balises <ejb-binding></ejb-binding> soit parsé à l'aide d'un autre 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 <service-deploye> <service-name></service-name> <ejb-binding> <jndi-reference></jndi-reference> <ejb-home-interface></ejb-home-interface> </ejb-binding> <java-binding> <implementation-class></implementation-class> </java-binding> <web-service> <service-implementation-class></service-implementation-class> <port-namespace></port-namespace> <port-name></port-name> <value-stub-property></value-stub-property> </web-service> </service-deploye>
Dans le handler, peut-on faire un truc du style :
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 @Override public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException { if ("service-deploye".equalsIgnoreCase(qName)) { serviceDeploye = new ServiceDeploye(); } else if ("service-name".equalsIgnoreCase(qName)) { buffer = new StringBuffer(); } else if ("ejb-binding".equalsIgnoreCase(qName)) { ejbBinding = new EJBBinding(); EJBBindingHandler ejbBindingHandler = new EJBBindingHandler(); // à partir de là et jusqu'à la balise de fin de <ejb-binding>, on délègue le parsing à ejbBindingHandler } ... }
Est ce que cela est envisageable ? Si non, quel moyen pourrais-je utiliser pour faire cela ?
Merci d'avance
Guillaume
Partager