< Programmation Java

Il existe dans Java deux packages permettant de manipuler les fichiers XML : la manière SAX (Simple API for XML, navigation via un curseur) et DOM (Document Object Model, navigation via un arbre).

Soit le fichier XML suivant :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Documentation>
	<Site Wiki="Wikibooks">
		<Livre Wikilivre="Java">
			<Page1>Introduction</Page1>
			<Page2>Bases du langage</Page2>
			<Exemple>XML</Exemple>
		</Livre>
	</Site>
</Documentation>

Remarque : les espaces sont interdits dans les noms des balises.

La méthode DOM

Le programme suivant génère ce fichier XML dans le même répertoire :

import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
 
public class XML_Creation_DOM {
 
	public static void main(String argv[]) {
 
	  try {
		DocumentBuilderFactory XML_Fabrique_Constructeur = DocumentBuilderFactory.newInstance();
		DocumentBuilder XML_Constructeur = XML_Fabrique_Constructeur.newDocumentBuilder();
 
		Document XML_Document = XML_Constructeur.newDocument();
		Element documentation = XML_Document.createElement("Documentation");
		XML_Document.appendChild(documentation);

		Element site = XML_Document.createElement("Site");
		documentation.appendChild(site);
		Attr attribut1 = XML_Document.createAttribute("Wiki");
		attribut1.setValue("Wikibooks");
		site.setAttributeNode(attribut1);
		
		Element livre = XML_Document.createElement("Livre");
		site.appendChild(livre);
		Attr attribut2 = XML_Document.createAttribute("Wikilivre");
		attribut2.setValue("Java");
		livre.setAttributeNode(attribut2);

		Element page1 = XML_Document.createElement("Page1");
		page1.appendChild(XML_Document.createTextNode("Introduction"));
		livre.appendChild(page1);

		Element page2 = XML_Document.createElement("Page2");
		page2.appendChild(XML_Document.createTextNode("Bases du langage"));
		livre.appendChild(page2);		
 
		Element example = XML_Document.createElement("Exemple");
		example.appendChild(XML_Document.createTextNode("XML"));
		livre.appendChild(example);

		TransformerFactory XML_Fabrique_Transformeur = TransformerFactory.newInstance();
		Transformer XML_Transformeur = XML_Fabrique_Transformeur.newTransformer();
		DOMSource source = new DOMSource(XML_Document);
		StreamResult resultat = new StreamResult(new File("XML_résultat.xml"));
		XML_Transformeur.transform(source, resultat); 
		System.out.println("Le fichier XML a été généré !");
	  } catch (ParserConfigurationException pce) {
		pce.printStackTrace();
	  } catch (TransformerException tfe) {
		tfe.printStackTrace();
	  }
	}
}

La méthode SAX

Pour lire le fichier ci-dessus, il faut le parser avec un handler dont on redéfinit les méthodes :

import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.xml.sax.helpers.DefaultHandler;

public class XML_Creation_SAX {
 public static void main(String[] args) throws Exception {
  try {
   SAXParserFactory factory = SAXParserFactory.newInstance();
   SAXParser parser = factory.newSAXParser();
   parser.parse("XML_résultat.xml", new DefaultHandler() {
    public void startDocument() throws SAXException { System.out.println("startDocument"); }
    public void endDocument() throws SAXException { System.out.println("endDocument"); }
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("startElement: " + qName); }
    public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("endElement"); }
   });  
  } catch (Exception e) { System.err.println(e); System.exit(1); }
 }
}

La méthode JDOM

JDOM utilise les deux bibliothèques précédentes. Si l'erreur suivante survient : error: package org.jdom does not exist, il suffit de télécharger la bibliothèque. Pour utilise la version 2, remplacer les import org.jdom par des import org.jdom2.

Cette section est vide, pas assez détaillée ou incomplète.
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.