Parser en XML
Parcourir un document XML
inspir´e de Nicolas CYNOBER 2005
Exemple 2
<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
<menu>
<F r i t e s c l a s s e=” g r a s s e s ”>
<accompagnement>F r i c a d e l l e s</ accompagnement>
<s a u c e>B i e r r e</ s a u c e>
</ F r i t e s>
<F r i t e s c l a s s e=” g r a s s e s ”>
<accompagnement>Carbonade</ accompagnement>
<s a u c e>B i e r r e</ s a u c e>
</ F r i t e s>
<F r i t e s c l a s s e=” s a l e e ”>
<accompagnement>Moule</ accompagnement>
<s a u c e>M a r o i l e</ s a u c e>
</ F r i t e s>
</menu>
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 9 / 18
Parcourir un document XML
Parcourir un document XML
inspir´e de Nicolas CYNOBER 2005
Balayer l’arbre
Possibilit´e de r´ecup´erer les fils d’un noeud
Possibilit´e d’acc´eder aux attributs d’un noeud
v o i d a f f i c h e M e n u ( )
{
r a c i n e = document . g e tR o o tE l eme n t ( ) ;
// r e c u p e r a t i o n d e s p l a t s a bas e de F r i t e s a p a r t i r de l a r a c i n e
L i s t <Element>l i s t e P l a t s = ( L i s t <Element >) r a c i n e . g e t C h i l d r e n (”
F r i t e s ” ) ;
// b a l a y a g e p a r I t e r a t o r
I t e r a t o r <Element>i = l i s t e P l a t s . i t e r a t o r ( ) ;
w h i l e ( i . h asN ext ( ) )
{
El e ment c o u r a n t = i . n e xt ( ) ;
//On a f f i c h e l ’ a cc om pag nement de l ’ e l e m e n t c o u r a n t
Sys te m . o ut . p r i n t l n ( c o u r a n t . g e t C h i l d (” acc ompagnement ” ) . g e t T e x t ( )
) ;
}
}
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 10 / 18
Filtrage d’un document XML
filtrage d’un fichier XML
inspir´e de Nicolas CYNOBER 2005
Filtrage
Utilisation d’un objet de type Filter
Possibilit´e d’utiliser une sous classes :
ElementFilter bas´ee sur le filtre d’´el´ements
ContentFilter bas´ee sur le de type de contenu
(commentaires, ´el´ements, ...)
AbstractFilter pour coupler les filtres (par ET, OU,
negation)
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 11 / 18
Filtrage d’un document XML
Exemple de filtre I
inspir´e de Nicolas CYNOBER 2005
filtre sur les plats avec sauce `a la Bi`ere
v o i d a f f i c h e F i l t r e ( )
{
//On c r ´e e un n ouvea u f i l t r e
F i l t e r f i l t r e = new F i l t e r ( )
{
p u b l i c b o o le a n ma tche s ( O b j e c t ob )
{
//1−: on ne f i l t r e que l e s El em e nt s
i f ( ! ( ob i n s t a n c e o f Eleme n t ) ) {r e t u r n f a l s e ;}
El e ment e l e m e n t = ( Element ) ob ;
b o o l e a n v e r i f S a u c e = f a l s e ;
//2 −on f i l t r e s u r l a v a l e u r B i e r e de chaqu e noeud s a u c e
i f ( e l e m e n t . g e t C h i l d (” s a u c e ” ) . ge tT ex tTri m ( ) . e q u a l s ( ” B i e r e ” )
) v e r i f S a u c e = t r u e ;
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 12 / 18