Newsgroup: it.comp.java
Titolo: XML -> Classe Java

Esiste una classe java che permetta la conversione di un file xml in un
oggetto java e viceversa ?
Grazie

 Grazie
Dovresti leggere innanzitutto il file xml e poi con i valori ricavati
inserirli in classi java.
La lettura del file la puoi fare usando la procedura DOM o SAX
(quest'ultima è consigliata se i file sono molto grandi).
 
Dai un occhiata a questo link.
http://www.latoserver.it/java/parsing-XML/
in caso fai una ricerca con google cercando DOM e SAX.
Spero possa esserti di aiuto.
Alessandra
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Max wrote:

import java.util.*;
import java.io.*;
import java.beans.*;
        System.out.println(myBean);
        XMLEncoder enc = new XMLEncoder(
          new BufferedOutputStream(
            new FileOutputStream("/tmp/test.xml")));
        enc.writeObject(bean);
        enc.close();
        XMLDecoder dec = new XMLDecoder(
          new BufferedInputStream(
            new FileInputStream("/tmp/test.xml")));
        myBean = (ItemBean) dec.readObject();
        dec.close();
        System.out.println(myBean);
-- 
Consonni Davide
(
dcon...@enter.it
)

 oggetto java e viceversa ?
JAXB di SUN permette dato uno schema che descrive l'xml generare una 
serie di classi che ti consentiranno si leggere e scrivere XML, nonchè 
di accedere ai "dati" chiamando i metodi delle classi generate.
http://java.sun.com/xml/jaxb/

l'ho guardato oggi, forse è perchè ho dato un'occhiata veloce, ma non è un
"po" complicato ?
-- 
Consonni Davide
(
dcon...@enter.it
)

 "po" complicato ?
Hum... io l'ho usato diverso tempo fa e forse l'impatto iniziale non è 
dei migliori...
Almeno per me dato che non avevo epserienza con gli schema ho avuto un 
po' di problemi... ma per il resto fatto lo schema non ho avuto grosse 
difficoltà.
Gli dai in pasto lo schema e poi compili le classi generate... da lì è 
abbastanza semplice...

 "po" complicato ?
Curiosità... Hai provato Jakarta Commons Betwixt?
	regards,
		Kazuma
-- 
Alessandro "Kazuma" Garbagnati, kazuma(presso)jguru(punto)com
Tomcat & EJB FAQ Manager, 
http://www.jguru.com

> Curiosità... Hai provato Jakarta Commons Betwixt?
si, ma avevo dei problemi con le date.
-- 
Consonni Davide
(
dcon...@enter.it
)

 si, ma avevo dei problemi con le date.
Ha ancora qualche problema... io li ho avuti con un BigDecimal con i
separatori... ho dovuto scrivere qualche linea di codice ed
implementare un paio di classi....
Probabilmente (spero) fixeranno la cosa... 


 Grazie
Il mio consiglio č quello di usare la 'nuova' API JAXB (java api for
XML binding) che trovi compresa nella reference implementation dei web
services di SUN. Il funzionamento č il seguente:
1) effettui una precompilazione dando in pasto al parser lo schema dei
tuoi XML, ottenendo una gerarchia di classi che rispecchiano la
struttura dell'XML.
2) a runtime istanzi oggetti di quelle classi mappando un documento
XML con l'oggetto risultante. A questo punto accedi al documento
attraverso il suo oggetto mappato attraverso comuni setter e getter.
3) vale il viceversa: istanzi l'oggetto, setti attributi, generi un
file XML corrispondente.
4) ovviamente in fase di mapping puoi intercettare errori di parsing
per segnalare un XML non corretto...
E' semplicemente una bomba. Magari all'inizio un poco criptico
(considera che le sezioni del documento XML sono inner class) ma
utilissimo se non vuoi farti carico del parsing. L'ho usato per un
progetto in cui da diverse origini giungevano documenti XML che
dovevano essere trattati e successivamente elaborati. Con le mappe ad
oggetti la persistenza dei contenuti dei file XML sui record di un DB
č stata davvero semplice!
Spero di essere stato utile.
Ciao.

Max wrote:

se hai definito lo schema xml puoi usare castor (zeus se hai il dtd)
in pratica sono dei generatori di codice: gli dai in pasto un XML schema 
e ti generano le classi necessarie per gestire file XML che aderiscono a 
quello schema.
dopodiche prendi l'oggetto radice, esegui il metodo radice.marshall(file 
XML) e ottini una gerarchia di oggetti che sono la rappresentazione del 
file XML che gli hai dato in pasto.
in questo modo puoi settare valori allinterno del file xml semplicemente 
con dei nodo.set(valore)
spero di non essere stato troppo incasinato nella spiegazione ;)
Ciao, Nonnu.