+ All Categories
Home > Documents > Java & XML - Aix-Marseille...

Java & XML - Aix-Marseille...

Date post: 22-May-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
30
Java & XML Table des mati` eres 1 SAX (Simple API for XML) 2 1.1 Principes de SAX ........................................... 3 1.2 Les packages Java de SAX 2 ..................................... 4 1.3 Premier programme SAX2 ...................................... 5 1.4 Appel de l’analyseur SAX ....................................... 6 1.5 ebut et fin d’analyse ......................................... 7 1.6 Le gestionnaire de contenu ...................................... 8 1.7 Traiter les caract` eres ......................................... 9 1.8 Traiter les erreurs ........................................... 10 2 L’API DOM (Document Object Model) 11 2.1 Le package Java org.w3c.dom .................................... 12 2.2 L’interface Node ............................................ 13 2.3 Premier programme DOM ....................................... 14 2.4 Premier programme DOM ....................................... 15 2.5 Parcours d’un arbre DOM ....................................... 16 3 JAXP (Java API for XML Processing) 17 3.1 Une usine ` a analyseurs ........................................ 18 3.2 Une usine ` a analyseurs (suite) ..................................... 19 3.3 Les analyseurs JAXP ......................................... 20 3.4 Une usine pour transformer ...................................... 21 3.5 Les transformations .......................................... 22 3.6 Un exemple de transformation .................................... 23 4 Les alternatives ` a SAX/DOM/JAXP 24 4.1 La librairie JDOM ........................................... 25 4.2 La librairie DOM4J .......................................... 26 5 JAXB (Java API for XML Binding) 27 5.1 Compilation d’un DTD/sch´ ema .................................... 28 5.2 Lecture d’un fichier XML ....................................... 29 5.3 en´ eration de documents XML .................................... 30 1
Transcript
Page 1: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

Java & XML

Table des matieres

1 SAX (Simple API for XML) 2

1.1 Principes de SAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Les packages Java de SAX 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Premier programme SAX2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Appel de l’analyseur SAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.5 Debut et fin d’analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.6 Le gestionnaire de contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.7 Traiter les caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.8 Traiter les erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 L’API DOM (Document Object Model) 11

2.1 Le package Java org.w3c.dom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2 L’interface Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3 Premier programme DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.4 Premier programme DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.5 Parcours d’un arbre DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 JAXP (Java API for XML Processing) 17

3.1 Une usine a analyseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2 Une usine a analyseurs (suite) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.3 Les analyseurs JAXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.4 Une usine pour transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.5 Les transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.6 Un exemple de transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Les alternatives a SAX/DOM/JAXP 24

4.1 La librairie JDOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 La librairie DOM4J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 JAXB (Java API for XML Binding) 27

5.1 Compilation d’un DTD/schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.2 Lecture d’un fichier XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.3 Generation de documents XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1

Page 2: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1 SAX (Simple API for XML)

reference : http://www.saxproject.org

Auteur : David Megginson.

Version : 2.0.1.

L’interface de programmation SAX propose une vision evenementielle de l’analyse d’un document XML.

2

Page 3: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.1 Principes de SAX

plugin

SAX

nanoXML

plugin

SAX

xp

plugin

SAX

Crimson

plugin

SAX

Xerces

SAXApplication

Objectifs :

• Simplifier l’acces aux analyseurs,• Rendre l’application independante des analyseurs,

L’analyse genere des evenements recuperes par SAX et passes a l’application.

3

Page 4: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.2 Les packages Java de SAX 2

Les interfaces du package org.xml.sax :

ContentHandler evenements lies au contenu

DTDHandler evenements lies a la DTD

ErrorHandler recuperation des erreurs

Locator recuperation de la position

XMLReader Analyseur

| XMLFilter

AttributeList

Attributes

EntityResolver

...

Les classes du package org.xml.sax.helpers :

org.xml.sax.helpers.DefaultHandler

implements org.xml.sax.ContentHandler,

implements org.xml.sax.DTDHandler,

implements org.xml.sax.EntityResolver,

implements org.xml.sax.ErrorHandler

...

4

Page 5: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.3 Premier programme SAX2

package exemples;

import org.xml.sax.Attributes;

import org.xml.sax.InputSource;

import org.xml.sax.SAXParseException;

import org.xml.sax.XMLReader;

import org.xml.sax.helpers.DefaultHandler;

import org.xml.sax.helpers.XMLReaderFactory;

public class SaxSample extends DefaultHandler {

int nbElements = 0;

int nbCharacters = 0;

// methodes d’analyse et de traitement des evenements

...

}

5

Page 6: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.4 Appel de l’analyseur SAX

public void parseXmlFile(String fileName) throws Exception {

// creer un analyseur SAX par defaut

XMLReader xr = XMLReaderFactory.createXMLReader();

// fixer le(s) gestionnaire(s) d’evenements

xr.setContentHandler(this);

xr.setErrorHandler(this);

// xr.setDTDHandler(this);

// fixer les comportements

xr.setFeature("http://xml.org/sax/features/validation", true);

// analyser la source XML

xr.parse(new InputSource(fileName));

}

6

Page 7: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.5 Debut et fin d’analyse

// Travail a faire en debut d’analyse

@Override

public void startDocument() {

nbElements = 0;

nbCharacters = 0;

}

// Travail a faire en fin d’analyse

@Override

public void endDocument() {

System.out.println();

System.out.println("nbElements = " + nbElements);

System.out.println("nbCharacters = " + nbCharacters);

}

7

Page 8: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.6 Le gestionnaire de contenu

@Override

public void startElement(String uri, String name, String qName,

Attributes atts) {

System.out.println("<" + qName + ">");

nbElements++;

}

Travail a faire : preparer le stockage ou le traitement des donnees.

@Override

public void endElement(String uri, String name, String qName) {

System.out.println("</" + qName + ">");

}

Travail a faire : terminer le stockage ou le traitement.

8

Page 9: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.7 Traiter les caracteres

@Override

public void characters(char ch[], int start, int length) {

nbCharacters += (length);

for (int i = start; i < start + length; i++) {

switch (ch[i]) {

case ’&’:

System.out.print("&amp;");

break;

case ’<’:

System.out.print("&lt;");

break;

case ’>’:

System.out.print("&gt;");

break;

default:

System.out.print(ch[i]);

break;

}

}

}

9

Page 10: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

1.8 Traiter les erreurs

@Override

public void error(SAXParseException e) {

System.err.printf("Erreur non fatale (ligne %d, col %d) : %s\n",

e.getLineNumber(), e.getColumnNumber(), e.getMessage());

}

@Override

public void fatalError(SAXParseException e) {

System.err.printf("Erreur fatale : %s\n", e.getMessage());

}

@Override

public void warning(SAXParseException e) {

System.err.printf("warning : %s\n", e.getMessage());

}

10

Page 11: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2 L’API DOM (Document Object Model)

plu

gin

DO

M

plu

gin

DO

M

plu

gin

DO

M

Xerces

Crimson

xp

Application

DOM

des arbres XML

en mémoire

Représentation

• Representation objet en memoire d’un document XML ou HTML (4.0).

• Norme proposee par le consortium W3C ( http://www.w3.org/DOM/ ) pour resoudre les problemes liees

au DHTML (HTML + CSS + JavaScript).

• DOM se compose de deux parties :

. DOM noyau (Core DOM) pour XML,

. DOM HTML.

11

Page 12: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2.1 Le package Java org.w3c.dom

Les interfaces du package org.w3c.dom :

Node

| Attr

| CharacterData

| | Comment

| | Text

| | | CDATASection

| Document

| DocumentFragment

| DocumentType

| Element

| Entity

| EntityReference

| Notation

| ProcessingInstruction

NamedNodeMap

NodeList

...

12

Page 13: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2.2 L’interface Node

Les methodes de l’interface org.w3c.dom.Node :

Node getFirstChild() Node getNextSibling()

Node getLastChild() Node getPreviousSibling()

Node getParentNode() NodeList getChildNodes()

boolean hasChildNodes() Document getOwnerDocument()

NamedNodeMap getAttributes()

boolean hasAttributes()

String getLocalName() String getNamespaceURI()

String getNodeName() String getPrefix()

short getNodeType()

String getNodeValue()

Methodes de modification :

Node appendChild(Node newChild)

Node insertBefore(Node newChild, Node refChild)

Node removeChild(Node oldChild)

Node replaceChild(Node newChild, Node oldChild)

void setNodeValue(String nodeValue)

void setPrefix(String prefix)

Node cloneNode(boolean deep)

...

13

Page 14: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2.3 Premier programme DOM

package exemples;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Comment;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

public class DomSample {

// methodes d’analyse et d’affichage

...

}

14

Page 15: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2.4 Premier programme DOM

Declaration de l’analyseur XML et creation du document :

public void parseXmlFile(String fileName) throws Exception {

// preparer une usine a fabriquer les analyseurs DOM

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setValidating(true);

// construire une analyseur DOM

DocumentBuilder parser = factory.newDocumentBuilder();

// analyser et afficher le document XML

Document doc = parser.parse(new File(fileName));

printTree(doc);

}

15

Page 16: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

2.5 Parcours d’un arbre DOM

Parcours de l’arbre XML :

public void printTree(Node n) {

if (n.getNodeType() == org.w3c.dom.Node.TEXT_NODE) {

System.out.print(n.getNodeValue());

} else if (n instanceof Comment) {

System.out.printf("<!-- %s -->", n.getNodeValue());

} else if (n instanceof Element) {

System.out.printf("<%s>", n.getNodeName());

printTrees(n.getChildNodes());

System.out.printf("</%s>", n.getNodeName());

} else if (n instanceof Document) {

printTrees(n.getChildNodes());

}

}

Afficher les noeuds fils :

public void printTrees(NodeList nodes) {

for (int i = 0; (i < nodes.getLength()); i++) {

printTree(nodes.item(i));

}

}

16

Page 17: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3 JAXP (Java API for XML Processing)

DOM

SAX

DOM

SAX

DOM

SAX

Application

Analyseurs

DOM/SAX

Processeur XSL

JAXP

Serializer

propose par JavaSoft ( http://java.sun.com/xml/jaxp/ ) et present depuis Java 2 version 1.4.

Unification des approches SAX et DOM

Proposition d’une API standard pour les transformations de documents XML (processeur XSL, FO et/ouXPATH).

17

Page 18: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.1 Une usine a analyseurs

Le package javax.xml.parsers propose les classes

DocumentBuilderFactory producteur d’analyseurs DOM

SAXParserFactory producteur d’analyseurs SAX

DocumentBuilder Analyseur DOM

SAXParser Analyseur SAX

...

Quelques methodes de DocumentBuilderFactory :

static DocumentBuilderFactory newInstance()

boolean isValidating()

void setValidating(boolean validating)

DocumentBuilder newDocumentBuilder()

... ...

18

Page 19: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.2 Une usine a analyseurs (suite)

Quelques methodes de SAXParserFactory :

static SAXParserFactory newInstance()

DocumentBuilder newDocumentBuilder()

SAXParser newSAXParser()

... ...

19

Page 20: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.3 Les analyseurs JAXP

Les usines servent a produire des analyseurs ayant certaines caracteristiques.

Quelques methodes de DocumentBuilder :

Document parse(java.io.File f)

Document parse(org.xml.sax.InputSource is)

Document parse(java.io.InputStream is)

Document parse(java.lang.String uri)

void setErrorHandler(org.xml.sax.ErrorHandler eh)

... ...

Quelques methodes de SAXParser :

org.xml.sax.XMLReader getXMLReader()

void parse(java.io.File f, DefaultHandler dh)

void parse(InputSource is, DefaultHandler dh)

void parse(java.io.InputStream is, DefaultHandler dh)

void parse(java.lang.String uri, DefaultHandler dh)

20

Page 21: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.4 Une usine pour transformer

Le package javax.xml.transform propose les classes

• TransformerFactory Fabrication des transformations

• Transformer Une transformation

• OutputKeys Le format de sortie d’une transformation

Quelques methodes de TransformerFactory :

static TransformerFactory newInstance()

... ...

Transformer newTransformer()

Transformer newTransformer(Source source)

... ...

Templates newTemplates(Source source)

Une Source peut etre :

• javax.xml.transform.dom.DOMSource un arbre DOM

• javax.xml.transform.sax.SAXSource une source d’evenements SAX

• javax.xml.transform.stream.StreamSource un flux a analyser

21

Page 22: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.5 Les transformations

Quelques methodes de Transformer :

void setOutputProperty(String name, String value)

void setParameter(String name, java.lang.Object value)

... ...

void transform(Source xmlSource, Result outputTarget)

... ...

Un Result peut etre :

• javax.xml.transform.dom.DOMResult production d’un arbre DOM

• javax.xml.transform.sax.SAXResult production d’evenements SAX

• javax.xml.transform.stream.StreamResult production d’un flux XML

22

Page 23: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

3.6 Un exemple de transformation

Lecture, copie et serialisation :

// Creer une usine a "transformer"

TransformerFactory factory = TransformerFactory.newInstance();

// Un premier "transformer" simple

Transformer analyseur = factory.newTransformer();

// Lire le document XML et en faire une copie

DOMResult xml = new DOMResult();

analyseur.transform(new StreamSource("test.xml"), xml);

DOMSource xmlSrc = new DOMSource(xml.getNode());

analyseur.transform(xmlSrc, new StreamResult("test2.xml") );

Utilisation d’une feuille de style XSLT :

// Un "transformer" processeur XSL

Transformer xslt = factory.newTransformer( new StreamSource("test.xsl") );

// appliquer la feuille XSLT

DOMResult out = new DOMResult();

xslt.transform(new DOMSource(xml.getNode()), out);

// Serialiser out dans "test.out" en iso-8859-1

analyseur.setOutputProperty(OutputKeys.INDENT, "yes");

analyseur.setOutputProperty(OutputKeys.ENCODING, "iso-8859-1");

analyseur.transform(

new DOMSource(out.getNode()),

new StreamResult("test.out")

);

23

Page 24: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

4 Les alternatives a SAX/DOM/JAXP

24

Page 25: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

4.1 La librairie JDOM

Objectifs : offrir une bibliotheque simple pour la representation et la manipulation de documents XML( http://www.jdom.org ).

import org.jdom.Element;

import org.jdom.Document;

import org.jdom.output.XMLOutputter;

public void createAndPrint() {

Element stock = new Element("stock")

.addContent(new Element("nom").setText("CD"))

.addContent(new Element("prix").setText("100"));

Document root = new Document(stock);

XMLOutputter outputter = new XMLOutputter(" ",true,"iso-8859-1");

try {

outputter.output(root, System.out);

} catch (java.io.IOException e) {

...

}

}

Des passerelles sont disponibles vers :

• la representation DOM,

• les evenements SAX,

• les analyseurs compatibles SAX/DOM,

• les processeurs XSL compatibles JAXP,

25

Page 26: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

4.2 La librairie DOM4J

Objectifs : offrir une bibliotheque simple pour la representation et la manipulation via XPATH de documentsXML ( http://www.dom4j.org ).

Example Dom4J :

package exemples;

import java.util.Iterator;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

public class Dom4jSample {

public static void main(String args[]) {

Document document = DocumentHelper.createDocument();

Element root = document.addElement("root");

root.addElement("author").addAttribute("name", "Toby")

.addAttribute("location", "Germany")

.addText("Tobias Rademacher");

root.addElement("author").addAttribute("name", "James")

.addAttribute("location", "UK").addText("James Strachan");

List<?> results = document.selectNodes("//author[@location = ’UK’]");

for (Iterator<?> iter = results.iterator(); iter.hasNext();) {

Element element = (Element) iter.next();

System.out.println(element.valueOf("concat(@name,’ : ’, .)"));

}

}

}

26

Page 27: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

5 JAXB (Java API for XML Binding)

Objectif : mise en correspondance (binding) automatique entre une famille de documents XML et un schemade classes Java.

Continuite entre :

• une analyse UML,

• un diagramme de classes,

• un modele physique sous la forme d’un Schema XML,

• une implantation Java automatisee.

27

Page 28: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

5.1 Compilation d’un DTD/schema

a partir de la DTD suivante (et/ou du schema) :

<!ELEMENT personne (nom,age,adresse)>

<!ELEMENT nom (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT adresse (rue,ville)>

<!ELEMENT rue (#PCDATA)>

<!ELEMENT ville (#PCDATA)>

nous obtenons

interface Personne { | interface Adresse {

String getNom(); | String getRue();

int getAge(); | String getVille();

Adresse getAdresse(); | }

} |

28

Page 29: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

5.2 Lecture d’un fichier XML

En une seule operation le fichier XML peut etre

• analyse,• valide et• charge en memoire sous la forme d’instances des classes generees.

29

Page 30: Java & XML - Aix-Marseille Universityjean-luc.massat.perso.luminy.univ-amu.fr/ens/xml/06-java.pdf · 2020-04-11 · 2 L’API DOM (Document Object Model) 11 ... 3.4 Une usine pour

5.3 Generation de documents XML

• Ce mecanisme est la base de la persistance d’objet implantee dans les EJB ou les JDO (Java data Object).

• Il existe d’autres framework de mise en correspondance XML-Java comme

• castor (http://www.castor.org/),• breeze (http://www.breezefactor.com/),• XGen (http://www.commerceone.com/),

30


Recommended