1
안녕하세요, JAXB를 사용하여 XML 파일을 Java 객체로 변환하려고하는데 자바가 매우 새로 생겼습니다. pojo 클래스를 만들었고 주석을 추가했지만 올바른지 확실하지 않습니다. 나는 구글에서 몇 시간을 보냈지 만 잘못된 것을 발견 할 수 없었다.xml 파일을 언 마샬링하는 동안 필드 속성이 null로 설정됩니다.
@XmlRootElement(name="question")
public class Question {
private int id;
private String questionname;
private List<Answer> answers;
private List<Marks> marks;
public Question() {}
public Question(int id, String questionname, List<Answer> answers, List<Marks> marks) {
super();
this.id = id;
this.questionname = questionname;
this.answers = answers;
this.marks = marks;
}
@XmlElement(name="marks")
public List<Marks> getMarks() {
return marks;
}
public void setMarks(List<Marks> marks) {
this.marks = marks;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getQuestionname() {
return questionname;
}
public void setQuestionname(String questionname) {
this.questionname = questionname;
}
@XmlElement
public List<Answer> getAnswers() {
return answers;
}
public void setAnswers(List<Answer> answers) {
this.answers = answers;
}
}
public class Answer {
private int id;
private String answername;
private String postedby;
public Answer() {}
public Answer(int id, String answername, String postedby) {
super();
this.id = id;
this.answername = answername;
this.postedby = postedby;
}
public int getId() {
return id;
}
public void setId(int 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;
}
}
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
public class Marks {
private LongAnswer longAnswer ;
private ShortAnswer shortAnswer;
private String set;
@XmlAttribute
public String getSet() {
return set;
}
public void setSet(String set) {
this.set = set;
}
@XmlElement(name="longAnswer")
public LongAnswer getLongAnswer() {
return longAnswer;
}
public void setLongAnswer(LongAnswer longAnswer) {
this.longAnswer = longAnswer;
}
@XmlElement(name="shortAnswer")
public ShortAnswer getShortAnswer() {
return shortAnswer;
}
public void setShortAnswer(ShortAnswer shortAnswer) {
this.shortAnswer = shortAnswer;
}
}
public class LongAnswer {
private String set;
public String getSet() {
return set;
}
public void setSet(String set) {
this.set = set;
}
public class ShortAnswer {
private String set;
public String getSet() {
return set;
}
public void setSet(String set) {
this.set = set;
}
}
사람이 어떻게 '마크'모델 클래스에 주석을 어떻게 설정하는 'longAnswer'와 'shortAnswer'말해 줄 수 :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<question id="1">
<answers>
<answername>java is a programming language</answername>
<id>101</id>
<postedby>ravi</postedby>
</answers>
<answers>
<answername>java is a platform</answername>
<id>102</id>
<postedby>john</postedby>
</answers>
<questionname>What is java?</questionname>
<marks set=50>
<longAnswer set=45/>
<shortAnswer set=30/>
</marks>
</question>
뽀조 클래스 :
이
내 XML이다 들. 왜냐하면 나는 그들을 위해 null 값을 얻고 있습니다.
나는 JAXB에 너무 익숙하지 않지만 XML이 작동하려면'set' 속성을 인용해야 할 수도 있습니다. 이상적으로 XML 선언 앞에 공백이 있으면 안되지만이 문제를 일으키지 않는 것 같습니다. – iainn
@iainn 따옴표를 추가했지만 여전히 값은 null입니다. –
피할 수있는 많은 불필요한 코드/클래스가 있습니다. 또한,'Question' 객체를 어디서 인스턴스화합니까? – Ravi