Newsgroup: it.comp.java
Titolo: jaxb e jdom

Mi serve una libreria per leggere file xml e, leggendo da altre
discussioni ho visto che le più utilizzate sono jdom e jaxb. Qual è
la migliore?

 ha scritto nel messaggio 
news:1127831358....@o13g2000cwo.googlegroups.com...
Mi serve una libreria per leggere file xml e, leggendo da altre
discussioni ho visto che le piů utilizzate sono jdom e jaxb. Qual č
la migliore?

Ti ringrazio, infatti avevo già scaricato preventivamente jdom. Il
fatto è che non è che ci sarebbe un tutorial o qualcosa di simile. In
realta devo fare un piccolo programma per leggere file .xml, e non
dovrebbe essere complicato, ma sto esplorando questa parte di java da
pochissimo (praticamente 2 giorni eheheh) e non so neanche come si
scrivono quelle tre righe di cui parlavi... non è che mi potresti
postare qualche esempietto eheheh. Comunque grazie anticipatamente!

 la migliore?
io ho provato sia jdom che dom4j e ti consiglio quest'ultima in quanto 
ha maggiori funzionalità (gestione di file grandi, facile da utilizzare 
per creare file xml..)

vorrei sapere di piu su dom4j!!
io utilizzo jdom per fare qualcosa del genere:
    public Element createAvailRequest(Hashtable<String,String> h,
boolean withReturn) throws Exception {
        Document doc = new DocumentImpl(null);
        Element root = doc.createElement("FBB_81");
        doc.appendChild(root);
        Element levOne = doc.createElement("AirAvailMods");
        root.appendChild(levOne);
        Element levTwo = doc.createElement("GenAvail");
        levOne.appendChild(levTwo);
        Element levThree1 = doc.createElement("NumSeats");
        levThree1.appendChild(doc.createTextNode(h.get("numSeats")));
        levTwo.appendChild(levThree1);
        Element _levThree50 = doc.createElement("Class");
...
...
return root;
 }
in dom4j la vita è semplificata??
in che si differenzia con jdom?
ciao

scusate..quello era x la costruzione dell'albero..
x il parsing: ad es.
....
                        if (
temp.item(k).getNodeName().equals("FltItemAry")) {
                            temp1 = temp.item(k).getChildNodes();
                            for(int y = 0; y < temp1.getLength(); y++)
{
                                // FltItem several Times
                                if
(temp1.item(y).getNodeName().equals("FltItem")) {
                                    temp2 =
temp1.item(y).getChildNodes();
                                    for (int z = 0;
z<temp2.getLength(); z++) {
                                        // go or back segments matching
 this indexnum in AvailFlt output
                                        if
(temp2.item(z).getNodeName().equals("IndexNum")) {
                                            if (goback.equals("1")) {
goIndex.add(temp2.item(z).getFirstChild().getNodeValue());
                                            }
                                            if (goback.equals("2")) {
backIndex.add(temp2.item(z).getFirstChild().getNodeValue());
                                            }
                                        }
...

 la migliore?
Sono diverse
jaxb serve se hai lo schema (xsd). Lo dai in pasto allo 
jaxb-compilatore, lui genera un tot di classi java che ti permettono di 
leggere e scrivere files xml che usano quello schema.
jdom (e dom4j) invece ti permettono di leggere creare e scrivere un 
qualunque xml e anche di usare XPath (almeno credo). Fra le due io ho 
usato un pň jdom ma come puoi vedere in vari thread degli ultimi giorni 
dom4j dovrebbe esser meglio
bye
DKano

 leggere e scrivere files xml che usano quello schema.
per essere piů chiari: jaxb fa il binding (cioč mappa) il contenuto del 
file xml nelle classi java create tramite il jaxb-compilatore, cosě č 
possibile con una semplice istruzione
	RadiceFileXml rfx = (RadiceFileXmL)u.unmarshal(new 
FileInputStream("file.xml" ) );
avere il file xml in una classe java.
Le classi java create con il jaxb-compilatore sono delle javabeans.
forse non ho proprio chiarito la cosa :)


avevo visto qualcosa che inseriva tutto in dei bean ad hoc
nn ricordo piu cosa fosse
ed a riguardo ho le idee un po confuse...
se ci fosse un testo o qualche guida a riguardo ne sarei felice...

schiacciapuffi ha scritto:

http://xmlbeans.apache.org/index.html


si è questo che ho visto tempo fa per la tesi.. solo che ho subito
abbandonato xke l'xml che mi rimandano dal server è veramente un
aborto di xml.. lo schema nn esiste, poi per il tempo ristretto non mi
sono nemmeno messo a vedere bene di cosa si trattasse ed ho continuato
ad usare jdom..
penso che in questo xml senza schema xmlbeans nn vada..! oppure??...
un ES:
<?xml version="1.0" ?>
- <AirAvailability_6_5>
- <AirAvail>
- <BICAvail>
- <BICStatusAry>
- <!--  DataType: Array
  -->
- <!--  Length: n/a
  -->
- <BICStatus>
- <!--  DataType: FieldSet
  -->
- <!--  Length: n/a
  -->
- <BIC>
- <!--  DataType: Alpha
  -->
- <!--  Length: 2
  -->
- <!--  Left justified, blank filled
  -->
  </BIC>
- <Status>
- <!--  DataType: Alphanumeric
  -->
- <!--  Length: 3
  -->
- <!--
 Availability status for this booking code:
 000-999 numeric status
 A available
 L class closed, waitlist open
 C class closed, waitlist closed
 R on request
 N not operational
 X not operational
  -->
  </Status>
  </BICStatus>
  </BICStatusAry>
  </BICAvail>
- <FltAvailStatus>
- <FltStatus>
- <!--  DataType: Alpha
  -->
- <!--  Length: 1
  -->
- <!--
 Indicates the operational status of this flight segment. Where:
X	Flight canceled
D	Flight departed
P	Flight past scheduled departure
N	No classes returned from link
B	Flight boarding
U	Flight status unknown
Blank	Flight operational and not past 	scheduled departure.
  -->
  </FltStatus>
- <First>
- <!--  DataType: Alpha
  -->
- <!--  Length: 1
  -->
- <!--
 First class available seats. Indicators are:
A	Seats are available
L	Waitlist open
C	Waitlist closed
N	Seats NOT available
R	Seats only available on request to airline
  -->
  </First>
- <Business>
- <!--  DataType: Alpha
  -->
- <!--  Length: 1
  -->
- <!--
 Business class available seats. Indicators are:
A	Seats are available
L	Waitlist open
C	Waitlist closed
N	Seats NOT available
R	Seats only available on request to airline
  -->
  </Business>
- <Coach>
- <!--  DataType: Alpha
  -->
- <!--  Length: 1
  -->
- <!--
 Coach class available seats. Indicators are:
A	Seats are available
L	Waitlist open
C	Waitlist closed
N	Seats NOT available
R	Seats only available on request to airline
  -->
  </Coach>
  </FltAvailStatus>
- <AvailSummary>
- <NumSegs>
- <!--  DataType: Numeric
  -->
- <!--  Length: 2
  -->
- <!--  Number of flight item segments. The total number of direct and
connecting flight segments in response.
  -->
  </NumSegs>
- <StartPt>
- <!--  DataType: Alpha
  -->
- <!--  Length: 5
  -->
- <!--  Airport or city code of the customer embarkation. Left
justified, blank filled.
  -->
  </StartPt>
- <StartCity>
- <!--  DataType: Alpha
  -->
- <!--  Length: 5
  -->
- <!--
 City code for requested origin city or airport
Left justified, blank filled.
  -->
  </StartCity>
- <EndPt>
- <!--  DataType: Alpha
  -->
- <!--  Length: 5
  -->
- <!--  Airport or city code of the Destination. Left justified, blank
filled.
  -->
  </EndPt>
è un server per la prenotazione di biglietti aerei..

 
[cut]


si gli xml in risposta hanno in genere 6-7 livelli
adesso provo a vedere sul link ke m hai dato..
per quanto riguarda xmlbean ho letto di che si tratta e senza schema
non ce ne si fa nulla :(


no scusa ho visto ma ho sbagliato.. di elementi distinti ne sono
mooolti piu di 5-6
e i liv saranno 5-6 di media..
xmlbean senza xsd nn lo posso usare; a questo punto l'utilizzare jdom
penso sia stata la scelta migliore.. (pur nn conoscendo dom4j)..ripeto,
penso.....

Non lo conoscevo domj4, gradie dio avermelo fatto notare, dici che è
più facile per scrivere file xml? In realtà devo leggerli, e con jdom
mi sono trovato bene, ma potrei anche dover scrivere, quindi non è
male conoscere un'altra libreria.

se possiedi l'xsd dell'xml t coviene usare xmlbeans.. che da quanto ho
capito semplifica di molto il lavoro..dom4j non lo conosco e nn so che
vantaggi/svantaggi porta rispetto a jdom