Tutoriel Android Comment lire et écrire un fichier XML en utilisant DOM Romain Raveaux



Documents pareils
Flux de données Lecture/Ecriture Fichiers

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Programmation des Applications Réparties. Parsers XML DOM et SAX

Document Object Model (DOM)

Master d Informatique Corrigé du partiel novembre 2010

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

BD et XML : Exercices

DOM - Document Object Model

Cours 14 Les fichiers

34. DOM (Document Object Model)

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Introduction à ElasticSearch

< _155_0>

La base de données XML exist. A. Belaïd

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Introduction à l informatique en BCPST

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

OpenPaaS Le réseau social d'entreprise

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

GUI Client in HomeSIP Project

Plateforme PAYZEN. Définition de Web-services

Les structures de données. Rajae El Ouazzani

Education Delivery Intelligent Tool

Développement Logiciel

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TP2 : Client d une BDD SqlServer

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Tutoriel d installation de Hibernate avec Eclipse

Utiliser Améliorer Prêcher. Introduction à LDAP

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Web Tier : déploiement de servlets

Optimisations des SGBDR. Étude de cas : MySQL

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

: seul le dossier dossier sera cherché, tous les sousdomaines

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Remote Method Invocation (RMI)

Outils logiciels pour l'ingénierie documentaire

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

BASE DE DONNÉES XML NATIVE

Approche Contract First

API FTP SMSENVOI V1.1

4. SERVICES WEB REST 46

TD3: tableaux avancées, première classe et chaînes

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Groupe Eyrolles, 2004 ISBN :

XML et Bases de données. Les bases de données XML natives.

Architectures Web Services RESTful

Documentation CAS à destination des éditeurs

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Aspects techniques : guide d interfaçage SSO

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

données en connaissance et en actions?

Notes de cours : bases de données distribuées et repliquées

DevTest Solutions. Référence. Version 8.0

Création d objet imbriqué sous PowerShell.

Architecture Orientée Service, JSON et API REST

Les arbres binaires de recherche

Travaux Pratiques : Lucène - Gestion d un index plein texte

Optimiser pour les appareils mobiles

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Import XML HAL et HAL- Inria

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Problème physique. CH5 Administration centralisée

SQL Parser XML Xquery : Approche de détection des injections SQL

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Ready to Go? [Retour d'expérience sur un projet en Golang] HTML PDF 1 / 44

Encryptions, compression et partitionnement des données

Trier les ventes (sales order) avec Vtiger CRM

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

.NET - Classe de Log

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

PHP 4 PARTIE : BASE DE DONNEES

Paris Airports - Web API Airports Path finding

SECURIDAY 2013 Cyber War

Java DataBaseConnectivity

Programmation par composants (1/3) Programmation par composants (2/3)

BIRT (Business Intelligence and Reporting Tools)

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Windows serveur 2012 : Active Directory

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Optimisation des échanges et traitements XML

Transcription:

Tutoriel Android Comment lire et écrire un fichier XML en utilisant DOM Romain Raveaux Préambule... 2 Prérequis... 3 SAX vs DOM... 4 Lecture... 5 Liste de noeuds... 5 Les attributs... 5 Ecriture... 6 Création du fichier... 6 Création du flux... 6 Ecriture dans le fichier... 7 Finir le document... 8 1

Préambule Il existe plusieurs manières de lire un fichier XML, deux API sont souvent utilisées : DOM et SAX. Il existe un bon tutoriel pour lire un fichier XML en utilisant SAX : http://thibault- koprowski.fr/2010/10/15/tutoriel- parsing- xml- sous- android/ Pour ma part, je vais illustrer comment lire et écrire un fichier XML en utilisant DOM. Ce tutoriel est à but pédagogique, il a vocation à faire travailler les étudiants. Pour cette raison, le tutoriel n est pas «clé en main» cependant vous y trouverez suffisamment d éléments pour progresser. 2

Prérequis Etre familier avec les documents XML, les langages à balises et le vocabulaire associé (XML, DTD, XSD). Savoir créer une application Android. 3

SAX vs DOM Une comparaison rapide : DOM : Nécessite de charger en mémoire tout le document XML. DOM est donc gourmant en mémoire (heap). DOM est souvent lent car charger le document XML prend du temps. Il parfois même impossible de charger en mémoire tout le document XML (base de connaissance WikiPedia). Par contre accéder à l information est plus rapide car l arbre XML est stocké en mémoire. SAX : Mode pas à pas, le fichier XML est traité ligne pas ligne. Le fichier XML est interprété ligne par ligne. Peu gourmant en mémoire mais SAX ne permet pas de filtrer ou d accéder à l information de manière «intelligente». 4

Lecture Le but est d obtenir l élément racine du document XML (élément racine = la balise racine). Dans le code ci- dessous, File est une chaine de caractères contenant le chemin du fichier XML à lire. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Document dom = builder.parse(new FileInputStream(File)); Element root = dom.getdocumentelement(); A partir de cette étape, on peut récupérer les nœuds du document XML et les attributs Liste de noeuds Par exemple dans un document XML, nous voulons récupérer toutes les balises «etape» NodeList items = root.getelementsbytagname("etape"); Les attributs Chaque balise «etape» possède des attributs dont un attribut «id». Pour récupérer la valeur de cet attribut, il possible de procéder ainsi : for (int i = 0; i < items.getlength(); i++) { Node item = items.item(i); String id = item.getattributes().getnameditem("id").getnodevalue(); 5

Ecriture Création du fichier La méthode «Environment.getExternalStorageDirectory()» retourne le chemin de la SDCARD (souvent /mnt/sdcard) File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/fichier.xml"); try{ newxmlfile.createnewfile(); }catch(ioexception e){ } Log.e("IOException", "exception in createnewfile() method"); Création du flux FileOutputStream fileos = null; try{ fileos = new FileOutputStream(newxmlfile); }catch(filenotfoundexception e){ } Log.e("FileNotFoundException", "can't create FileOutputStream"); 6

Ecriture dans le fichier //On crée un XmlSerializer pour écrire les données XmlSerializer serializer = Xml.newSerializer(); try { l encodage UTF- 8 //On fixe le FileOutputStream comme sortie pour le serializer, utilisant serializer.setoutput(fileos, "UTF- 8"); //Ecrit la déclaration XML <?xml avec le type d encodange (if encodage est non null) et le flag standalone (si standalone est non null) serializer.startdocument(null, Boolean.valueOf(true)); output", true); //on fixe les options d indentation serializer.setfeature("http://xmlpull.org/v1/doc/features.html#indent- //On écrit le nœud racine appelé "root" serializer.starttag(null, "monxml"); //ensuite on écrit une balise «etape» serializer.starttag(null, "etape"); //on ecrit un attribut à la balise serializer.attribute(null, "id","01") ; //on écrit du texte à l intérieur serializer.text(«valeur»); //puis on ferme la balise «étape» serializer.endtag(null, " etape "); 7

Finir le document serializer.enddocument(); serializer.flush(); fileos.close(); 8