Vous êtes sur la page 1sur 13

XML – XPath - JDOM

XML
 XML (eXtensible Markup Language)

▼ Stockage d’informations structurées  document XML


▼ Le contenu du document XML est composé de :
 texte libre
 de balises (~HTML) possédant éventuellement des attributs
▼ Simplification d’une norme plus ancienne : SGML (Standard
Generalized Markup Langage)

 Utilisation de XML (très diverse) :

▼ Stockage
▼ Échange d’informations entre diverses applications
▼ Génération de documents (HTML par exemple)
▼ Export et import vers/de bases de données
▼ Etc.
Mini-formation XML 1
XML : méta-langage
 XML, contrairement à HTML, ne possède aucune balise
prédéfinie :
▼ Il faut définir les balises suivant la signification des données
à manipuler : DTD, schéma XML.
▼ En XML, les données sont séparées de l’utilisation : le
balisage apporte une structuration logique.

 Exemple de fichier XML :


<?xml version="1.0" encoding="ISO-8859-1"?>

<carnet_d_adresses>
<fiche numero="1">
<nom>TANGUY</nom>
<prenom>Philippe</prenom>
<email>philippe.tanguy@enst-bretagne.fr</email>
</fiche>
<fiche numero="2">
<nom>BIGARET</nom>
<prenom>Sébastien</prenom>
<email>sebastien.bigaret@enst-bretagne.fr</email>
</fiche>
</carnet_d_adresses>

Mini-formation XML 2
XML : méta-langage
 Différents niveaux de définition :

▼ XML : syntaxe définie par une recommandation du W3C


(World Wide Web) : http://www.w3c.org/TR/2004/REC-xml-
20040204/

▼ Cette syntaxe permet de définir des formats de documents


XML (dont la syntaxe et la grammaire sont définie au sein
d’une DTD ou d’un schéma XMML) :

 Carnet d’adresses
 Recette de cuisine
 XHTML
 Différents formats de Bioside
 Etc.

▼ Les formats définis permettent de créer des « instances » de


documents.

Mini-formation XML 3
XML : structuration logique
 En XML, la structuration logique des
documents est un structure arborescente
– Un arbre et non une forêt : un unique élément racine et non
plusieurs. Définition au sein d’une DTD (Document Type
Definition)
carnet_d
<!ELEMENT carnet_d_adresses
_adresse
(fiche*)>
s
|-
<!ELEMENT fiche
fiche
(nom,prenom,perso,travail?)>
(numero)
<!ATTLIST fiche numero CDATA
| |
#REQUIRED>
- nom
| |
<!ELEMENT nom (#PCDATA)>
- prenom
<!ELEMENT prenom (#PCDATA)>
| |
<!ELEMENT perso
- perso
(adresse,telephone+,email?)>
| |
<!ELEMENT travail
- |-
(adresse,telephone+,email?)>
adresse
<!ELEMENT adresse (#PCDATA)>
| |
<!ELEMENT telephone
- |-
(#PCDATA)>
telephon
Mini-formation XML <!ELEMENT email (#PCDATA)>
4
e
| |
Écriture d’un document XML
 Le balisage :
▼ <balise>contenu</balise>
 Le contenu peut être soit du texte soit d’autres éléments soit les deux.
▼ Élément vide : <balise/>

 Un document XML doit être :

▼ Obligatoirement bien formé :


 Il ne doit exister qu'une seule balise racine.
 Toute balise ouverte doit être refermée (a <balise> doit être associé </balise>).
 Imbrication des balises :
– Interdit : <a> … <b> … </a> … </b>
– Autorisé : <a> … <b> … </b> … </a>

 Les noms des balises doivent commencer par une lettre ou "_", les autres
caractères peuvent être des chiffres, des lettres, "_", "." ou "-".

 Les noms des balises ne doivent pas commencer par xml.

▼ Éventuellement valide par rapport à une DTD : le document respecte alors


la structuration logique qui y est définie.

Mini-formation XML 5
XPath : XML Path
 Objectifs :

▼ Récupérer les parties d’un document XML : il permet


d’exprimer une requête qui en extraira tout ou partie du
document.
▼ Manipulation de chaînes.
▼ Utilisable pour la reconnaissance/sélection (matching) de
parties de documents.

 Utilisation dans d’autres recommandations du W3C :


XSLT, XPointer, XQuery, etc.

 Comme les systèmes de fichiers Unix, XML est un


arbre. La navigation au sein d’un document peut être
formalisée d’une manière semblable à la navigation
dans un système de fichiers.

Mini-formation XML 6
XPath : notations
 La notation XPath reprend une partie de la notation
utiliser pour naviguer dans un système d'exploitation,
ainsi :

▼ le séparateur est le le slash /

▼ pour préciser un chemin à partir de la racine (chemin


absolue), il faut qu'il commence par un /

▼ un double point .. permet de préciser l'élément père de


l'élément courant

▼ un simple point . permet de préciser l'élément courant

▼ un arobase @ permet de préciser un attribut d'un élément

▼ pour préciser l'indice d'un élément il faut le préciser entre


crochets

Mini-formation XML 7
Xpath : exemples
 Récupérer la valeur des noms du carnet d’adresses :
values:/carnet_d_adresses/fiche/nom
TANGUY
BIGARET

 Récupérer les nœuds « noms » du carnet d’adresses :


nodes:/carnet_d_adresses/fiche/nom
<nom>TANGUY</nom>
<nom>BIGARET</nom>

 Récupérer l’email personnel de la fiche n° 1 :


values:/carnet_d_adresses/fiche[@numero='1']/perso/email
philippe.tanguy2@wanadoo.fr

 Récupérer les prénoms des fiches autres que celles


portant le n° 1 :
values:/carnet_d_adresses/fiche[not(@numero='1')]/prenom
Sébastien
(ou values://fiche[not(@numero='1')]/prenom)

Mini-formation XML 8
JDOM
 API spécifique à java pour la manipulation de documents XML.

 Liés à la recommandation XML, 2 spécifications de parseurs


(analyseur) existent. Ils sont indépendants des langages et des
implémentations sont disponibles pour le C, C++, Java, Python, etc.
▼ API SAX : parseur « évenementiel »
▼ API DOM : reproduction de l’arborescence du document XML en mémoire

 Volonté de deux programmeurs indépendants de créer une API


alternative, plus simple et uniquement dédiée à la programmation
Java :
▼ API JDOM :
http://www.jdom.org/
Documentation, javadoc, etc.
▼ Licence open source
▼ Tutoriaux :
 http://cynober.developpez.com/tutoriel/java/xml/jdom/
 http://www-106.ibm.com/developerworks/fr_fr/java/library/j-
jdom/?t=egrL296&p=frprogjdom

Mini-formation XML 9
JDOM : fonctionnalités
 L'API de JDOM propose les fonctionnalités suivantes :

▼ Lecture de fichiers XML à partir de fichiers, arbres DOM, flux


SAX (en réalité, JDOM ne fournit qu'une représentation sous
forme d'objets Java, mais ce n'est pas un analyseur
syntaxique. Il en utilise un, comme Xerces par exemple, pour
la lecture de flux XML).

▼ Création de document XML.

▼ Exportation d'arbre XMLJDOM sous la forme de fichier, arbre


DOM, flux SAX.

▼ Transformation XSLT.

▼ Support de XPath 1.0 (à travers la brique logicielle Jaxen).

Mini-formation XML 10
JDOM : manipulations de base
 Insertion dans le classpath de la librairie « jdom.jar »

 Classes principales :
▼ Document
▼ Element
▼ Attribute

 Ouvrir un document XML :


 SAXBuilder builder = new SAXBuilder();
 Document doc = builder.build(new File("monDoc.xml"));

 Obtenir la racine (l’élément « root »)


 Element racine = doc.getRootElement();

 Récupérer les élément fils


 List listeFiche = racine.getChildren();
 List listeFiche = racine.getChildren("fiche");
 Element nom = fiche.getChild("nom");
 String valeur = nom.getText();

 Récupérer les attributs :


 Attribute numero = fiche.getAttibute("numero");
 String valeur = numero.getValue();

Mini-formation XML 11
XPath avec JDom
 Insertion dans le classpath de :

▼jdom.jar
▼jaxen-core.jar
▼jaxen-jdom.jar
▼saxpath.jar

 Classe principale :

▼XPath
– XPath xpath =
XPath.newInstance("//fiche[@numero='2']/perso/email");

 Obtenir des éléments :


– List paramsList = xpath.selectNodes(doc);

Mini-formation XML 12

Vous aimerez peut-être aussi