2010-06-15 9 views
0

Je souhaite enregistrer mon document DOM en tant que fichier XML. Je suivre ce tutoriel: http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPXSLT4.htmlde OutputStream vers un flux de fichiers

Alors, voici mon code:

... 
TransformerFactory tFactory = TransformerFactory.newInstance(); 
Transformer transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(System.out); 
transformer.transform(source, result); 

mais au lieu de System.out, je veux enregistrer dans un fichier résultat. Comment puis-je faire ceci?

Répondre

3

Utilisez

new StreamResult(new FileOutputStream(...)) 

Mais vous pouvez utiliser un Writer, de sorte que vous produisez des caractères codés, à moins que StreamResult utilise un codage Unicode, dire UTF-8, implicitement.

+0

Utilisez les objets 'InputStream' et' OutputStream' pour XML, car XML décrit son encodage en interne. Par exemple, créez un 'OutputStreamWriter' en utilisant le codage UTF-16. Le 'Transformer' ne peut pas détecter automatiquement cela, donc il utilise un attribut" encoding "de" UTF-8 "dans la déclaration' xml'. Lorsque le XML résultant est analysé, un décodeur UTF-8 est utilisé comme spécifié dans le document, mais il échoue car le codage réel est UTF-16. Vous pouvez contourner ce problème en définissant la propriété 'OutputKeys.ENCODING' sur' Transformer', mais pourquoi s'en soucier? – erickson

Questions connexes