JAXB Unmarshalling, nie udaje się wydobyć danych z xml z dodatowymi znacznikami

0

Mam plik xml na którym chce wykonac: Unmarshalling i wyświetlić odczytane z tego pliku xml wartości. Prawie wszystko się udaje poza wydobyciem pierwszego rekordu, który ma dodatkowe znaczniki (w stosunku do pozostałego kodu) <page>:

<packages id="pl.package1">
	<page>
		<answername>java is a programming language</answername>
		<postedby>ravi</postedby>
	</page>
	</packages>

Co zrobić aby znaczniki <page> również były uwzględniane w moim unmarshallingu.
Cały kod poniżej:
klasa Question:

import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;  
      
    @XmlRootElement  
    public class Question {  
    private List<Packages> packages;  
    public Question() {}  
    public Question(List<Packages> packages) {  
        super();  
        this.packages = packages;  
    }  

    @XmlElement  
    public List<Packages> getPackages() {  
        return packages;  
    }  
    public void setPackages(List<Packages> packages) {  
        this.packages = packages;  
    }  
    }  

klasa Packages:

import javax.xml.bind.annotation.XmlAttribute;

public class Packages {  
    private String id;  
    private String answername;  
    private String postedby;  
    public Packages() {}  
    public Packages(String id, String answername, String postedby) {  
        super();  
        this.id = id;  
        this.answername = answername;  
        this.postedby = postedby;  
    }  
    
    @XmlAttribute  
    public String getId() {  
        return id;  
    }  
    public void setId(String id) {  
        this.id = id;  
    }  
    public String getAnswername() {  
        return answername;  
    }  
    public void setAnswername(String answername) {  
        this.answername = answername;  
    }  
    public String getPostedby() {  
        return postedby;  
    }  
    public void setPostedby(String postedby) {  
        this.postedby = postedby;  
    }  
      
    }  

klasa XmlToObject:

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;  
    
 public class XmlToObject {  
 	public static Map<String, String> mapa = new HashMap<String, String>();
     public static void main(String[] args) {  
    
      try {  
    
         File file = new File("question.xml");  
         JAXBContext jaxbContext = JAXBContext.newInstance(Question.class);  
    
         Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
         Question que= (Question) jaxbUnmarshaller.unmarshal(file);  
         System.out.println("Answers:");  
         List<Packages> list=que.getPackages();  
         for(Packages ans:list)  {
           System.out.println(ans.getId()+" "+ans.getAnswername()+"  "+ans.getPostedby());  
         }
       } catch (JAXBException e) {  
         e.printStackTrace();  
       }  
    
     }  
 }  

plik question.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<question>
	<packages id="pl.package1">
	<page>
		<answername>java is a programming language</answername>
		<postedby>ravi</postedby>
	</page>
	</packages>
	<packages id="pl.package2">
		<answername>tom is a platform</answername>
		<postedby>john</postedby>
	</packages>
	<packages id="pl.package3">
		<answername>gum is a platform</answername>
		<postedby>krzys</postedby>
	</packages>
</question> 

i wynik z konsoli:

Answers:
pl.package1 null null
pl.package2 tom is a platform john
pl.package3 gum is a platform krzys

0

Nie mam pojęcia czy to przejdzie, ale może jak dosypiesz odpowiednich adnotacji xmlowych to bedzie ok xd

public interface Packages {  
    String id();  
    String answername();  
    String postedby();  
}

public class DefaultPackages implements Packages {  
    private String id;  
    private String answername;  
    private String postedby;  

   // gettery itp
}

public class Page {
    private String answername;  
    private String postedby;  
}

public class PagePackages implements Packages {
    private String id;  
    private Page page;

   String id() {
     return id;
   }

  String answername() {
    return page.answername();
  }
 // itp
}


public class Question {
      private List<Packages> packages;  
}

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