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