Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Genera un Xml, con Xml Mapper in java

    Salve a tutti, spero possiate aiutarmi ma son fermo su un progetto da ben due giorni. Vi espongo il problema.
    Ho un Bean in Java i cui valori vengono settati per poi darli in pasto ad un xml mapper. Quindi per indicargli nome dei tag e struttura ho usato pacchetto seguente: com.fasterxml.jackson.xml.XmlMapper . Ecco il pezzo di codice per farvi capire:
    codice:
    @JsonAutoDetect
    @JacksonXmlRootElement(localName ="Patient")
    public class Patient implements Serializable {
      private static final long serialVersionUID = -2981849269841429849L;
      @JsonProperty("patientId")
      @JacksonXmlProperty(isAttribute = true)
      private String patientId;
      @JsonProperty("patientName")
      @JacksonXmlProperty(isAttribute = true)
      private String patientName;
      @JacksonXmlProperty(localName = "Series")
      @JacksonXmlElementWrapper(useWrapping=false)
      private ArrayList<Serie> listSerie;
    }
    I valori li vado a riempire in un'altra classe dove instanzio la classe Patient e uso i soliti metodi set e get per riempire i tag. Il tutto viene dato in pasto all'oggetto xml Mapper in questo modo:
    codice:
    Wado mapp = new Wado();
    mapp.setvalue("bla bla");
    String xmlWado = new XmlMapper().writeValueAsString(wado);
    Purtroppo il risultato atteso non è quello sperato. La stringa generatami è:
    codice:
    <Patient patientId="" patientName="">
    <Series>
    <Series></Series>
    <Series></Series>
    <Series></Series>
    </Series>
    In pratica non mi aspetto che il tag Series abbia un padre di nome Series che racchiude tutte le series, ma dovrei aspettarmi una cosa simile a:
    codice:
    <Patient patientId="" patientName="">
    
    <Series></Series>
    <Series></Series>
    <Series></Series>
    Qualcuno può aiutarmi? Vi ringrazio in anticipo. A presto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    99
    Ciao,


    è stato un po' rognoso ci ho messo 10 minuti a trovare la soluzione!
    Tutta colpa degli import..

    Questa è la mia main:

    codice:
    import java.io.IOException;import java.util.ArrayList;
    
    
    import com.fasterxml.jackson.core.JsonGenerationException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.dataformat.xml.XmlMapper;
    
    
    public class PatientMain {
    
    
        public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
    
    
            Patient mapp = new Patient();
            mapp.setPatientId("0");
            mapp.setPatientName("Francesco Muià");
            if(mapp.getListSerie() == null){
                mapp.setListSerie(new ArrayList<Serie>());
            }
            for(int a = 0; a<3; a++){
                Serie s = new Serie();
                s.setNoSerie("A" + a);
                mapp.getListSerie().add(s);
            } 
            String xmlWado = new XmlMapper().writeValueAsString(mapp);
            System.out.println(xmlWado.replace("><",">\r\n<"));
        }
    }

    Questa è la Patient:

    codice:
    import java.io.Serializable;
    import java.util.ArrayList;
    
    
    import org.codehaus.jackson.annotate.JsonAutoDetect;
    import org.codehaus.jackson.annotate.JsonProperty;
    
    
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
    import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    import com.fasterxml.jackson.xml.annotate.JacksonXmlRootElement;
    
    
     
    @JsonAutoDetect
    @JacksonXmlRootElement(localName ="Patient")
    public class Patient implements Serializable {
        
        private static final long serialVersionUID = -2981849269841429849L;
        
        @JsonProperty("patientId")
        @JacksonXmlProperty(isAttribute = true)
        private String patientId;
        
        @JsonProperty("patientName") 
        @JacksonXmlProperty(isAttribute = true)
        private String patientName;
        
        @JacksonXmlProperty(localName="Series",isAttribute = true)
        @JacksonXmlElementWrapper(useWrapping = false ) 
        private ArrayList<Serie> listSerie;
        
        public String getPatientId() {
            return patientId;
        }
        public void setPatientId(String patientId) {
            this.patientId = patientId;
        }
        public String getPatientName() {
            return patientName;
        }
        public void setPatientName(String patientName) {
            this.patientName = patientName;
        }
        public ArrayList<Serie> getListSerie() {
            return listSerie;
        }
        public void setListSerie(ArrayList<Serie> listSerie) {
            this.listSerie = listSerie;
        } 
    }

    Questa è Serie, tanto per...:

    codice:
    public class Serie {
        private String noSerie=null;
    
    
        public String getNoSerie() {
            return noSerie;
        }
    
    
        public void setNoSerie(String noSerie) {
            this.noSerie = noSerie;
        }
    
    
    }

    Last but not least gli imports di maven:

    codice:
    <dependency>            
             <groupId>com.fasterxml</groupId>
                <artifactId>jackson-xml-databind</artifactId>
                <version>0.6.2</version>
            </dependency> 
             <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.woodstox</groupId>
                <artifactId>woodstox-core-asl</artifactId>
                <version>4.1.4</version>
            </dependency>

    ....e questo è l'output:

    codice:
    <Patient patientId="0" patientName="Francesco Muià">
    <Series><noSerie>A0</noSerie></Series>
    <Series><noSerie>A1</noSerie></Series>
    <Series><noSerie>A2</noSerie></Series>
    </Patient>

    se mi chiedeste chi è per me un vero amico vi risponderei che è una persona che io considero alla pari di me.

  3. #3
    ...ecco allora il problema era riguardo alle librerie che usavo. Ti ringrazio. A buon rendere.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.