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
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