[XML] créer un fichier XML

créer un fichier XML [XML] - Java - Programmation

Marsh Posté le 03-02-2004 à 16:45:29    

Voila, j'ai une interface graphique en java...zones de textes , liste deroulantes etc... qui sont en fait des parametres.
 
 je voudrais sauvegarder ces attributs (enfin leur valeur plutot) au format XML
 
donc je voudrais juste savoir si ce que je pense faire est ce qu'il faut faire ou s'il y a d'autres moyens plus simples :
 
- lire mes attributs
créer un fichier XML  avec ses balises adequates(attributs de mon IHM) ainsi que les données qui vont avec, tout va a l'aide d'un FIleWriter
 
J'ai bon?
 
Par contre, je me demande comment faire pour ajouter des balises, car j'aurais besoin par la suite d'ajouter de nouveaux attributs dans ce fichier.... il faut tout faire "a la main"?
 
merci

Reply

Marsh Posté le 03-02-2004 à 16:45:29   

Reply

Marsh Posté le 03-02-2004 à 18:22:49    

Enregistrer dans du xml est pas une mauvaise idée, niveau portablilité.
 
Pour XML, la hiérarchie des balises est très importantes.
 
IL faudrait ke tu fasses des routines permettant de parser et d'insérer ton code ou il faut...

Reply

Marsh Posté le 03-02-2004 à 19:48:47    

ok ! pas de solution "toute faite " donc?
 
c'est ce que je voulais savoir

Reply

Marsh Posté le 05-02-2004 à 10:23:33    

spitagor a écrit :

ok ! pas de solution "toute faite " donc?
 
c'est ce que je voulais savoir


Pour enregistrer ton doc, tu peux commencer par créer ton arbre DOM avec javax.xml.parsers.DocumentBuilder et javax.xml.parsers.DocumentBuilderFactory puis l'enregistrer avec TransformerFactory et Transformer.
Exemple :
Création du doc :

Code :
  1. DocumentBuilderFactory factory =
  2.            DocumentBuilderFactory.newInstance();
  3.         try {
  4.           DocumentBuilder builder = factory.newDocumentBuilder();
  5.           document = builder.newDocument();  // Create from whole cloth
  6.           Element root =
  7.                   (Element) document.createElement("rootElement" );
  8.           document.appendChild(root);
  9.           root.appendChild( document.createTextNode("Some" ) );
  10.           root.appendChild( document.createTextNode(" " )    );
  11.           root.appendChild( document.createTextNode("text" ) );
  12.         } catch (ParserConfigurationException pce) {
  13.             // Parser with specified options can't be built
  14.             pce.printStackTrace();
  15.         }


 
Enregistrement du doc sous toto.xml:

Code :
  1. try {
  2.                 TransformerFactory usine = TransformerFactory.newInstance();
  3.                 Transformer transformeur = usine.newTransformer();
  4.                 FileOutputStream fichier = new FileOutputStream( "toto.xml" );
  5.                 transformeur.setOutputProperty(OutputKeys.ENCODING, "UTF-8" );
  6.                 transformeur.setOutputProperty(OutputKeys.INDENT, "yes" );
  7.                 transformeur.setOutputProperty(OutputKeys.METHOD, "xml" );
  8.                 transformeur.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no" );
  9.                 transformeur.setOutputProperty(OutputKeys.STANDALONE, "yes" );
  10.                 transformeur.setOutputProperty(OutputKeys.VERSION, "1.0" );
  11.                 transformeur.transform(new DOMSource(document), new StreamResult( fichier));
  12.                
  13.         } catch (TransformerConfigurationException e) {
  14.         e.printStackTrace();
  15.        
  16.         } catch (TransformerException e) {
  17.                 e.printStackTrace();
  18.         } catch (IOException ioe) {
  19.            // I/O error
  20.            ioe.printStackTrace();
  21.         }


 
Je sais pas si c'est vraiment la meilleure méthode, mais ça fonctionne.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 06-02-2004 à 10:45:30    

Merci bien : j'etais justement en trian de faire un truc de ce style... a savoir qu'une meilleure methode (en theorie...) serait d'utiliser JAXB et des XML shemas, ce qui permet d'eviter d'écrire un arbre en mémoire donc d'alleger le truc
 
Neanmoins il semble que cette architecture soit tres controversée... je vais donc utiliser le bon vieux DOM... en esperant que ce ne soit pas trop lourd (je dois parcourir environ 20 fichiers XML, les parser et chercher des données dedans...j'espere que ca va aller vite !)
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed