Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Java – XML Eric Blaudez (eric.baudez@u-psud.fr)| 05 - Partie II
2
Description Manipulation des fichiers XML. Ce cours est une brève introduction à la manipulation de fichiers XML Introduction Manipulation de document XML Exemple : écrire un fichier XML Exemple : lire un fichier XML Java - XML 2
3
Agenda – XML Introduction Manipulation de document XML Exemple : écrire un fichier XML Exemple : lire un fichier XML Java - XML 3
4
XML Introduction Java - XML 4 XML (EXtensible Markup Language) est un langage balisé d'écriture de fichier. Les fichiers XML sont des fichiers textes : il est possible d'écrire des fichiers XML avec un simple éditeur de texte. C'est sans doute à l'heure actuelle l'un des formalismes les plus utilisé, par exemple nous le retrouverons dans les fichiers SVG (images vectorielles), dans le MathML (formalisme d'écriture de formule mathématiques), DocBook pour l'écriture d'ouvrage,...
5
XML Introduction Java - XML 5 Un fichier XML doit suivre quelques règles : la première ligne doit être de la forme : les balise sont représentées par de : Doe une balise peut avoir des attributs : une balise ouverte doit impérativement être fermée (voir exemple ci-dessus) une balise ne peut pas commencer par un chiffre
6
Agenda – XML Introduction Manipulation de document XML Exemple : écrire un fichier XML Exemple : lire un fichier XML Java - XML 6
7
XML Manipulation de document XML Java - XML 7 La classe DocumentBuilder fournie les fonctionnalités pour la construction d’un fichier XML en chargeant un fichier ou manuellement. Un document XML est représenté par la classe Document.
8
XML Manipulation de document XML Java - XML 8 MéthodesDescription abstract DOMImplementation getDOMImplementation() Retourne une instance d'un DOMImplementation Schema getSchema()Retourne une instance du schéma utilisé avec la ressource XML abstract boolean isValidating()Indique si le parser est configuré pour valider la ressource XML abstract Document newDocument()Renvoi un nouvel object 'Document' Document parse(File f) Document parse(InputStream is) Document parse(InputStream is, String systemId) Document parse(String uri) Parse une entrée XML void reset()Replace le 'DocumentBuilder' dans sa configuration initiale
9
XML Manipulation de document XML Java - XML 9 Cette API permet de gérer des objets Document, qui sont une représentation des documents XML La plupart du temps la manipulation de fichiers XML fait intervenir quatre objets implémentant l'interface Node: Document : pour la gestion du document XML Element : pour la gestion des balises Attr : pour la gestion des attributs (des balises) Comment : pour les commentaires
10
XML Manipulation de document XML Java - XML 10 DocumentElement Att Comment Node
11
XML Manipulation de document XML Java - XML 11 MéthodeDescription Element createElement(String name)Créer une balise Att createAttribute(String name)Créer un attribut Comment createComment(String name)Créer un commentaire Extrait de l’API de Document
12
XML Manipulation de document XML Java - XML 12 MéthodeDescription String getAttribute(String name) Attr getAttributeNode(String name) Retourne la valeur (ou un nœud) d'un attribut en fonction de son nom NodeList getElementsByTagName(String name) Retrouve tous les descendants de l'élément ayant le nom name String getTagName()Retourne le nom de la balise boolean hasAttribute(String name)Retourne vrai si il existe une attribut avec le nom name void removeAttribute(String name)Supprime l'attribut ayant le nom name void setAttribute(String name, String value)Ajoute un nouvel attribut Extrait de l’API de Element
13
XML Manipulation de document XML Java - XML 13 MéthodeDescription String getName()Retourne le nom de l'attribut Element getOwnerElement()Retourne l'élément possédant l'attribut String getValue() void setValue(String value) retourne la valeur de l'attribut (getValue). Ou défini la valeur de l'attribut (setValue) Extrait de l’API de Att (les attributs)
14
XML Manipulation de document XML Java - XML 14 DocumentBuilder builder = factory.newDocumentBuilder(); Document document= builder.newDocument(); Création d’un document Element root = document.createElement("agenda"); Création d’une balise Comment comment = document.createComment("Agenda backup"); Création d’un commentaire Element event1 = document.createElement("event"); event1.setAttribute("public", "no"); Création d’un attribut
15
XML Manipulation de document XML Java - XML 15 La fonction newDocument() permet d'obtenir un document 'vide'. Il s'agit maintenant de le remplir. La classe Document dispose de fonctions pour créer les balises du fichier XML, les attributs ou encore les commentaires. La structure d'un document XML est hiérarchique, il suffit donc de créer les éléments (avec la méthode createElement) et de les ajouter (appendChild) en respectant la structure choisie. Il est possible d’ajouter des attributs aux éléments en utilisant la méthode setAttribute.
16
Agenda – XML Introduction Manipulation de document XML Exemple : écrire un fichier XML Exemple : lire un fichier XML Java - XML 16
17
XML Ecrire un fichier XML Java - XML 17 Train defense 0 Train defense 1 Train defense 2 Train defense 3 Train defense 4 En utilisant, DocumentBuilder & Document nous allons créer le document ci-contre
18
XML Ecrire un fichier XML Java - XML 18 DocumentBuilder builder = factory.newDocumentBuilder(); Document document= builder.newDocument(); Element root = document.createElement("agenda"); root.appendChild(comment); for (int event_i = 0;event_i<5;event_i++) { Element event = document.createElement("event"); event.setAttribute("public", "yes"); event.setAttribute("id", ""+event_i); event.setAttribute("date", "2016-06-23 "+(14+event_i)+":00"); event.setAttribute("duration", "02:00:00"); Element eventTitle = document.createElement("title"); eventTitle.appendChild(document.createTextNode("Train defense " + event_i)); Element eventRoom = document.createElement("room"); eventRoom.setAttribute("number", "i107"); event.appendChild(eventTitle); event.appendChild(eventRoom); root.appendChild(event); } document.appendChild(root); Racine Boucle créant 5 balises ‘event’ Création de la balise ‘event’ avec ses attributs Création de la balise ‘title’ avec son texte (createTextNode) Création de la balise ‘room’ avec ses attributs Ajout des balises dans ‘ l’arbre ’ XML
19
XML Ecrire un fichier XML Java - XML 19 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(document); StreamResult output = new StreamResult(new File(System.getProperty("user.home")+"/save.xml")); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); transformer.transform(source, output); L'écriture d'un fichier XML s'effectue en utilisant la classe Transformer. Cette classe offre des fonctionnalités de sauvegarde et de transformation de document : elle peut être utilisée pour appliquer une feuille de style XSL par exemple.
20
XML Ecrire un fichier XML Java - XML 20 Document Agenda (root) event titleroom newDocument … createElement createTextNode appendChild
21
Agenda – XML Introduction Manipulation de document XML Exemple : écrire un fichier XML Exemple : lire un fichier XML Java - XML 21
22
XML Lire un fichier XML 22 DocumentBuilder builder = factory.newDocumentBuilder(); Document document= builder.parse(new File("/save.xml")); Element root = document.getDocumentElement(); NodeList rootChildren = root.getElementsByTagName("event"); for (int ci = 0;ci<rootChildren.getLength();ci++) { if (rootChildren.item(ci).getNodeType() == Node.ELEMENT_NODE) { Node child = (Element)rootChildren.item(ci); if (child.hasAttributes()) { NamedNodeMap attributes = child.getAttributes(); for (int att_i = 0;att_i<attributes.getLength();att_i++) { Attr attribute = (Attr)attributes.item(att_i); } NodeList titles = ((Element)child).getElementsByTagName("title"); NodeList rooms = ((Element)child).getElementsByTagName("room"); for (int si = 0;si<titles.getLength();si++) { Node subNode = titles.item(si); Element titleElement = (Element)subNode; } Lit le fichier et récupère la racine Obtient la liste des balises ‘event ’ Boucle sur les balises ‘event ’ Recherche des attributs Obtient les balises title & room
23
XML Lire un fichier XML Java - XML 23 Document Agenda (root) DocumentBuilder parse getDocumentElement getElementsByTagName("event") getElementsByTagName(« room » | « title ») getAttributes Boucles sur les éléments
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.