JAXB Parsowanie

0

Chcę sparsować plik xml na obiekt w Javie ale wali mi ciągle że są jakieś niedozwolone adnotacje.
Mam obiekty Adres, Student, Lista studentów. Adres jest w studencie obiektem a w liście studentów jest lista obiektów student. Do parsowanie podaję tylko obekt ListaStudentów. Jednak wali błędami i nie bardzo wiem co jest źle. Nie moge takich zagłębionych relacji dawac do parsowania?

0

musisz wkleić kawałek XMLa i kod w Javie inaczej nie sposób o tym dyskutować :/

0

@PoczątkowyJEE skoro nie umiesz używać JAXBa to może użyjesz XMLEncoder i XMLDecoder? Tam nie trzeba żadnych okropnych adnotacji ani nic ;]

0

Chce z JAXB to zrobic.
Klasy

@XmlRootElement(name = "studenci")
@XmlSeeAlso(Student.class)
public class ListaStudentow {
      @XmlElement(name = "student")
    private List<Student> studenci = new ArrayList<Student>();

    public ListaStudentow() {

    }

    public List<Student> getStudenci() {
        return studenci;
    }

    public void setStudenci(List<Student> studenci) {
        this.studenci = studenci;
    }

}
public class Adres {
    @XmlElement
    private String ulica;
    @XmlElement
    private String miejscowosc;
    @XmlElement
    private int numerDomu;
    @XmlElement
    private String kodPocztowy;
    @XmlElement
    private String poczta;

    public Adres() {
        super();
    }

    public Adres(String ulica, String miejscowosc, int numerDomu,
            String kodPocztowy, String poczta) {
        super();
        this.ulica = ulica;
        this.miejscowosc = miejscowosc;
        this.numerDomu = numerDomu;
        this.kodPocztowy = kodPocztowy;
        this.poczta = poczta;
    }

    public String getUlica() {
        return ulica;
    }
    public void setUlica(String ulica) {
        this.ulica = ulica;
    }
    public String getMiejscowosc() {
        return miejscowosc;
    }
    public void setMiejscowosc(String miejscowosc) {
        this.miejscowosc = miejscowosc;
    }
    public int getNumerDomu() {
        return numerDomu;
    }
    public void setNumerDomu(int numerDomu) {
        this.numerDomu = numerDomu;
    }
    public String getKodPocztowy() {
        return kodPocztowy;
    }
    public void setKodPocztowy(String kodPocztowy) {
        this.kodPocztowy = kodPocztowy;
    }
    public String getPoczta() {
        return poczta;
    }
    public void setPoczta(String poczta) {
        this.poczta = poczta;
    }

} 

@XmlSeeAlso(Adres.class)
public class Student {
    @XmlElement
        private String imie;
    @XmlElement
        private String nazwisko;

        @XmlAttribute
        private String indeks;

        @XmlElement(name = "dataUr")

        private String date;

        @XmlElement(name = "mejsceUr")
        private String miejsceUrodzenia;
        @XmlElement
        private Adres adres;
        @XmlElement
        private String email;

        @XmlElement(name = "telefon")
        private String nrTelefonu;
        @XmlElement
        private String kierunekStudiow;
        @XmlElement
        private String specjalnosc;

        public Student(){

        }

        public Student(String imie, String nazwisko, String date,
                String miejsceUrodzenia, Adres adres, String email,
                String nrTelefonu, String kierunekStudiow, String specjalnosc) {
            super();
            this.imie = imie;
            this.nazwisko = nazwisko;
            this.date = date;
            this.miejsceUrodzenia = miejsceUrodzenia;
            this.adres = adres;
            this.email = email;
            this.nrTelefonu = nrTelefonu;
            this.kierunekStudiow = kierunekStudiow;
            this.specjalnosc = specjalnosc;
        }

        public String getImie() {
            return imie;
        }
        public void setImie(String imie) {
            this.imie = imie;
        }
        public String getNazwisko() {
            return nazwisko;
        }
        public void setNazwisko(String nazwisko) {
            this.nazwisko = nazwisko;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {

            this.date = date;
        }

        public String getMiejsceUrodzenia() {
            return miejsceUrodzenia;
        }
        public void setMiejsceUrodzenia(String miejsceUrodzenia) {
            this.miejsceUrodzenia = miejsceUrodzenia;
        }
        public Adres getAdres() {
            return adres;
        }
        public void setAdres(Adres adres) {
            this.adres = adres;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getNrTelefonu() {
            return nrTelefonu;
        }
        public void setNrTelefonu(String nrTelefonu) {
            this.nrTelefonu = nrTelefonu;
        }
        public String getKierunekStudiow() {
            return kierunekStudiow;
        }
        public void setKierunekStudiow(String kierunekStudiow) {
            this.kierunekStudiow = kierunekStudiow;
        }
        public String getSpecjalnosc() {
            return specjalnosc;
        }
        public void setSpecjalnosc(String specjalnosc) {
            this.specjalnosc = specjalnosc;
        }

        public String getIndeks() {
            return indeks;
        }

        public void setIndeks(String indeks) {
            this.indeks = indeks;
        }

        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return imie+ ": "+ nazwisko+ ": "+miejsceUrodzenia+ ": "+adres.getKodPocztowy()+"        "+indeks;
        }

}

Kod do wczytania xml do obiektu

public boolean xml2object(String url) {
        try {
            studenci =new ListaStudentow();
            jaxbContext = JAXBContext.newInstance(ListaStudentow.class);
            jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            studenci = (ListaStudentow) jaxbUnmarshaller
                    .unmarshal(new File(url));
        } catch (JAXBException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }
        return true;
    } 

błędy

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 16 counts of IllegalAnnotationExceptions
Class has two properties of the same name "studenci"
    this problem is related to the following location:
        at public java.util.List jee.mw.jaxb.pojo.ListaStudentow.getStudenci()
        at jee.mw.jaxb.pojo.ListaStudentow
    this problem is related to the following location:
        at private java.util.List jee.mw.jaxb.pojo.ListaStudentow.studenci
        at jee.mw.jaxb.pojo.ListaStudentow
Class has two properties of the same name "adres"
    this problem is related to the following location:
        at public jee.mw.jaxb.pojo.Adres jee.mw.jaxb.pojo.Student.getAdres()
        at jee.mw.jaxb.pojo.Student
        at private java.util.List jee.mw.jaxb.pojo.ListaStudentow.studenci
        at jee.mw.jaxb.pojo.ListaStudentow
    this problem is related to the following location:
        at private jee.mw.jaxb.pojo.Adres jee.mw.jaxb.pojo.Student.adres
        at jee.mw.jaxb.pojo.Student
        at private java.util.List jee.mw.jaxb.pojo.ListaStudentow.studenci
        at jee.mw.jaxb.pojo.ListaStudentow
Class has two properties of the same name "date"
    this problem is related to the following location:
        at public java.lang.String jee.mw.jaxb.pojo.Student.getDate()
        at jee.mw.jaxb.pojo.Student
        at private java.util.List jee.mw.jaxb.pojo.ListaStudentow.studenci
        at jee.mw.jaxb.pojo.ListaStudentow
    this problem is related to the following location:
        at private java.lang.String jee.mw.jaxb.pojo.Student.date
        at jee.mw.jaxb.pojo.Student
.
.
. 
0

do zamkinęcia. ogarnąłem

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0