A partir d'un arbre Dom, un transformeur (par defaut) permet d'obtenir le fichier XML équivalent.
// PrintDom.java
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
public class PrintDom
{
public static void main (String argv [])
{
if ((argv.length <1) || (argv.length > 2)){
System.err.println ("Usage: java PrintDom filename [validate]");
System.exit (1);
}
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
if ((argv.length == 2)&&(argv[1].equals("validate")) )
factory.setValidating(true);
else
factory.setValidating(false);
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File(argv[0]));
TransformerFactory transformFactory =
TransformerFactory.newInstance();
// recupérer une fabrique de transformeur
Transformer transform = transformFactory.newTransformer();
// recupérer un transformeur par defaut :
// qui ne transforme rien !!
DOMSource in = new DOMSource(doc);
// définir l'arbre Dom source de la transformation
StreamResult out = new StreamResult(System.out);
// définir le flot résultat de la transformation
transform.transform(in, out);
// transformer (içi : rien !!!)
} catch (TransformerConfigurationException e) {
System.out.println (" Transformer Factory error");
System.out.println(" " + e.getMessage() );
Throwable x = e;
if (e.getException() != null)
x = e.getException();
x.printStackTrace();
} catch (TransformerException e) {
System.out.println ("Transformation error");
System.out.println(" " + e.getMessage() );
Throwable x = e;
if (e.getException() != null)
x = e.getException();
x.printStackTrace();
} catch (SAXException e) {
Exception x = e;
if (e.getException() != null)
x = e.getException();
x.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
$ java PrintDom dialogue6.xml <?xml version="1.0" encoding="UTF-8"?> <!-- fichier dialogue6.xml --><!-- extrait de Tartuffe de Molière --> <dialogue><situation>acte I, Scene 1 : madame pernelle et // le fichier XML est bien le même que celui de départ flipote sa servante,elmire, mariane, dorine, damis, cléante.</situation> <replique> // a part, quelques caractères bizarres pour les accentués, mais // nous affichons de l'UTF-8 à l'aide d'un lecteur d'ASCII <personnage attitude="pressée" geste="marchant vite"> madame pernelle</personnage> <texte ton="fort">Allons, Flipote, allons, que d'eux je me délivre. </texte> </replique> <replique> <personnage attitude="essouflée">elmire</personnage> <texte ton="normal">Vous marchez d'un tel pas qu'on a peine à vous suivre.</texte> ....