Newsgroup: it.comp.java
Titolo: Prpoblemi con JAXB

Ciao! Date un'occhiata al seguente codice
public void GetCard (String Id) {
         try {
         	Core c = new Core();
             Connection con= c.getConnection();
             JAXBContext jc = JAXBContext.newInstance( 
"it.mais.micromais.MACA" );
             ObjectFactory of = new ObjectFactory();
             //MACA
             MACA maca = of.createMACA();
             String IdMACA = Id;
             int MACAsize = 2;
             String MACA = "MA_CA";
             Vector MACAValuesList = c.LoadTableValuesList(Id, MACA, 
con, MACAsize);
             if (MACAValuesList!=null){
             maca.setIdMACA((String)MACAValuesList.elementAt(0));
             maca.setMACA((String)MACAValuesList.elementAt(1));
             }
             MACAType.DAType da = of.createMACATypeDAType();
             int DAsize = 1;
             String DA = "DA";
             if (MACAValuesList!=null){
             Vector DAVectorValuesList = c.LoadChildValuesList(IdMACA, 
MACA, DA, con ,DAsize);
             for (int i=0; i<DAVectorValuesList.size(); i++){
             Vector DAValuesList = (Vector)DAVectorValuesList.get(i);
             String IdDA = (String)DAValuesList.elementAt(0);
             da.setIdDA((String)DAValuesList.elementAt(0));
             }
             }
	    Marshaller m = jc.createMarshaller();
             m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, 
Boolean.TRUE );
             m.marshal( maca, System.out );
         } catch( JAXBException je ) {
             je.printStackTrace();
         }
     }
Premesso che avviene la lettura e la scrittura delle variabili prese da 
un database sybse il risutltato dovrebbe essere una cosa del tipo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MA_CA IdMA_CA="1" MA_CA="Scheda"/>
<DA IdDA="1"/>
<DA IdDA="2"/>
<DA IdDA="3"/>
Io però ottengo
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MA_CA IdMA_CA="1" MA_CA="Scheda"/>,
di DA nessuna traccia.
Qulacuno mi può aiutare?

 Qulacuno mi può aiutare?
Beh, per come crei l'oggetto DAType (MACAType.DAType da = 
of.createMACATypeDAType();), deduco che DA e' subelement di MA_CA.
Il tuo schema associato all'xml che devi creare, quindi, molto probabilmente 
assomigliera' a
<xs:element name="MA_CA" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
      <xs:sequence>
        <xs:element name ="DA" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="IdDA" type="xs:string" />
        </xs:complexType>
        </xs:element>
       </xs:sequence>
    <xs:attribute name="IdMA_CA" type="xs:string" />
    <xs:attribute name="MA_CA" type="xs:string" />
    </xs:complexType>
</xs:element>
Ergo, il motivo per cui nel tuo xml non vedi gli elementi DA e' che non li 
"aggiungi" all'oggetto di tipo MACA. Per fare questo, prova ad aggiungere, 
all'interno del for prima della validazione e del marshalling, queste linee di 
codice (non conoscendo il tuo schema, potrebbe non funzionare, ma e' cmq qlcs di 
simile)
maca.getDa().add(da);
Il concetto e' maca.getDa() ti ritorna una lista (quella dei tuoi subelements di 
MACA), per questo puoi chiamare l'add (anzi, devi).
Se il tuo schema e' diverso da quello supposto, potrebbe non funzionare. Prova a 
postare lo schema se hai ancora problemi.
Ciao
Co


Grazie Konrad
dovevo aggiungere maca.getDA().add(da);