Sources JavaConsultez toutes les sources
Nombre d'auteurs : 29, nombre de sources : 134, création le 13 avril 2013
- Exemple de parsing XML avec SAX
- Exemple de création d'un bean Java à partir d'un XML avec SAX
- Exemple de gestion d'erreurs lors d'un parsing SAX
- Exemple de lecture d'un fichier XML avec DOM
- Exemple d'extraction d'informations sur un DOM
- Extraction des liens d'un XHTML avec l'API DOM
- Exemple de création d'un DOM
- Création d'un fichier XML avec SAX et XSLT
- Création d'un HTML à partir d'un XML avec XSLT
- Création d'un PDF avec FOP
- Création et lecture d'un arbre DOM
- Enregistrer des objets en XML : Sérialisation JavaBeans
- Exemple XPath
- Récupération d'un NodeSet avec XPath
- Récupération d'un Node avec XPath
- Récupération d'un Boolean avec XPath
- Récupération d'un String avec XPath
- Récupération d'un Number avec XPath
- XPathUtils
Exemple simple de configuration d'un parseur SAX pour lire un fichier XML.
Exemple de création d'un bean Java (Personne) à partir d'un XML avec SAX (grâce à un handler spécialisé : PersoneHandler).
Exemple de gestion d'erreurs lors d'un parsing SAX, grâce à un ErrorHandler.
Exemple simple de lecture d'un fichier XML avec L'API DOM
Exemple d'extraction d'informations sur un DOM : version XML, encoding, configuration DOM, etc..
Exemple de création de toutes pièces d'un DOM et sauvegarde sous forme de fichier XML avec XSLT.
Exemple de création d'un fichier XML avec l'API SAX et XSLT.
Exemple de création d'un HTML à partir d'un fichier XML avec XSLT
Exemple de création d'un fichier PDF, à partir d'un fichier XML, avec FOP
Résumé de la structure voulue : une structure comme un document XML, avec des noeuds (Node) qui ont des propriétés, qui peuvent avoir des enfants, profondeur et nombre d'enfants illimités.
On utilise org.w3c.dom.*.
Node est une interface.
Element est une autre interface, Node est une superinterface de Element.
Un Element possède des attributs (concrètement : les attributs dans un fichier XML)
Le code pour créer l'arborescence.
import
org.w3c.dom.*;
//
Les
5
import
suivants
si
on
veut
exporter
en
XML...
import
javax.xml.transform.*;
import
javax.xml.transform.stream.*;
import
javax.xml.transform.dom.*;
import
javax.xml.parsers.*;
import
java.io.*;
public
class
Test
{
public
static
void
main
(String[] args) throws
Exception
{
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance
();
DocumentBuilder db =
dbf.newDocumentBuilder
();
Document document =
db.newDocument
();
//
crée
un
Node
racine
Node racine =
document.createElement
("
Racine
"
);
//
et
l'ajoute
au
document...
document.appendChild
(racine);
//
Maintenant
on
ajout
noeud1
à
la
racine
Node noeud1 =
ajoutNoeud
(racine,"
aaa
"
, "
1er
noeud
"
);
//
et
un
fils
à
noeud1
ajoutNoeud
(noeud1,"
bbb
"
, "
Enfant
du
1er
noeud
"
);
//
Un
2e
noeud
à
la
racine
Node noeud2 =
ajoutNoeud
(racine,"
ccc
"
, "
2e
noeud
"
);
//
Avec
2
fils...
ajoutNoeud
(noeud2,"
ddd
"
, "
Ainé
du
2e
noeud
"
);
ajoutNoeud
(noeud2,"
eee
"
, "
Cadet
du
2e
noeud
"
);
ajoutNoeud
(noeud2,"
fff
"
, "
Dernier
enfant
du
2e
noeud
"
);
//
Pour
transformer
en
XML,
ça
permet
de
voir
si
le
document
est
bien
construit
TransformerFactory tf =
TransformerFactory.newInstance
();
Transformer t =
tf.newTransformer
();
t.transform
(new
DOMSource
(document),new
StreamResult
(new
File
("
toto.xml
"
)));
//
//
Pour
parcourir
le
document
et
l'afficher
System.out.println
(affichage
(document.getFirstChild
(), 0
));
}
public
static
Node ajoutNoeud
(Node parent, String valeur1, String valeur2)
{
Element element =
parent.getOwnerDocument
().createElement
("
Noeud
"
);
element.setAttribute
("
code
"
,valeur1);
element.setAttribute
("
texte
"
,valeur2);
parent.appendChild
(element);
return
element;
}
/**
*
Parcours
par
récurrence
le
noeud
N
,
pour
afficher
ou
faire
tout
autre
*
traitement
sur
l
'
arborescence
*
@param
Node
N
le
noeud
à
afficher
*
@param
int
profondeur
pour
connaître
la
profondeur
où
on
est
*/
public
static
String affichage
(Node N, int
profondeur) {
String ret =
"
"
;
Node fils;
if
(N !
=
null
) {
if
(N.hasChildNodes
()) {
//
Premier
enfant
fils =
N.getFirstChild
();
while
(fils !
=
null
) {
//
ici
le
traitement
spécifique
ret +
=
"
\n
"
;
for
(int
i =
0
; i <=
profondeur; i+
+
)
ret +
=
"
\t
"
;
//
Pour
récupérer
la
valeur
d'un
attribut
:
ret +
=
((Element)fils).getAttribute
("
code
"
)
+
"
"
+
((Element)fils).getAttribute
("
texte
"
);
//
récurrence
:
affiche
les
enfants
de
fils.
ret +
=
affichage
(fils, profondeur +
1
);
//
Passe
au
frère
suivant
fils =
fils.getNextSibling
();
}
}
}
return
ret;
}
}
Le XML obtenu est :
<
?xml version=
"
1.0
"
encoding=
"
UTF-8
"
?>
<
Racine>
<
Noeud code=
"
aaa
"
texte=
"
1er
noeud
"
>
<
Noeud code=
"
bbb
"
texte=
"
Enfant
du
1er
noeud
"
/
>
<
/
Noeud>
<
Noeud code=
"
ccc
"
texte=
"
2e
noeud
"
>
<
Noeud code=
"
ddd
"
texte=
"
Ainé
du
2e
noeud
"
/
>
<
Noeud code=
"
eee
"
texte=
"
Cadet
du
2e
noeud
"
/
>
<
Noeud code=
"
fff
"
texte=
"
Dernier
enfant
du
2e
noeud
"
/
>
<
/
Noeud>
<
/
Racine>
La fonction affichage retourne :
aaa 1er noeud
bbb Enfant du 1er noeud
ccc 2e
noeud
ddd Ainé du 2e
noeud
eee Cadet du 2e
noeud
fff Dernier enfant du 2e
noeud
Pour tout ceux qui se demandaient si on pouvait enregistrer des objets en XML sans passer par le format binaire de sérialisation habituel, voici une petite source qui va vous permettre de le faire ! Attention, la sérialisation XML n'est pas tout à fait l'équivalent de la sérialisation binaire utilisée par beaucoup de mécanismes Java, tout cela est précisé dans les sources. Avec la sérialisation XML (-> JavaBeans) vous ne pouvez pas faire autant qu'avec la sérialisation habituelle, le seul avantage : le fichier de sortie est lisible ...
Enjoy it !
@+
Exemple simple d'utilisation du package javax.xml.xpath.
Exemple de récupération d'un NodeSet (NodeList) avec XPath. Cet exemple se "connecte" au flux RSS du blog de developpez.com pour en récupérer les titres des articles publiés.
Exemple de récupération d'un Node unique avec XPath. Cet exemple se "conecte" au flux RSS du blog de develoçppez.com pour récupérer le titre du dernier article publié.
Exemple de récupération d'un booléen à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez;com puis indique si le dernier article publié appartient à la rubrique Java.
Exemple de récupération d'une chaîne de caractères à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez.com, récupère le contenu du dernier article publié et l'affiche dans une JTextPane.
Exemple e récupération d'n nombre à partir d'une expression XPath. L'exemple se connecte au flux RSS publié par le blog de developpez.com et compte le nombre d'articles parlant de J2EE dans la rubrique Java.
XPathUtils est une petite classe utilitaire contenant une seule méthode publique statique getXPath(). Cette méthode renvoie une chaîne contenant une expression XPath permettant d'accéder au noeud passé en paramètre, en partant de la racine de l'arbre DOM. Le noeud passé en paramètre peut être un élément, un attribut, un commentaire, un noeud texte ou la racine du document.