XML 문서를 Java 객체 트리로 변환하는 데 JAXB Unmarshaller를 사용하려고합니다.JAXB unmarshal이 루트가 아닌 요소를 반환합니다.
은 XML 문서는 다음과 같습니다
Levels.java :
@XmlRootElement
public class Levels {
private List<Level> levels = new ArrayList<Level>();
@XmlElementRef(name="Level")
public List<Level> getLevels() {
return levels;
}
public void setLevels(List<Level> levels) {
this.levels = levels;
}
}
Level.java :
<Levels>
<Level>
<Solution>
<Piece x="0" y="1">
<Shape/>
<Color/>
</Piece>
<Piece x="0" y="1">
<Shape/>
<Color/>
</Piece>
</Solution>
<Clues>
<Clue>
<Piece x="0" y="0">
<Shape/>
<Color/>
</Piece>
</Clue>
<Clue>
<Piece x="0" y="0">
<Shape/>
<Color/>
</Piece>
</Clue>
</Clues>
</Level>
</Levels>
내가 각 구성 요소를 유지하는 것은 매우 기본적인 클래스를 생성
@XmlRootElement(name="Levels")
public class Level {
private Solution solution = new Solution();
private Clues clues = new Clues();
@XmlElementRef(name="Solution")
public Solution getSolution() {
return solution;
}
public void setSolution(Solution solution) {
this.solution = solution;
}
@XmlElementRef(name="Clues")
public Clues getClues() {
return clues;
}
public void setClues(Clues clues) {
this.clues = clues;
}
}
Th 클래스의 전자 휴식이 (같은 주석 만 getter와 setter 메소드)
내가 XML을 비 정렬 화하기 위해 사용하는 코드와 같은이 포맷 :
는File file = new File("res/levelTest.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Levels.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Object o = jaxbUnmarshaller.unmarshal(file);
System.out.println(o);
내가 무엇입니까 문제는 때 객체를 인쇄하면 [email protected]***
이 아니라 [email protected]***
이 루트 요소입니다. 이것은, unmarshaller가 루트 요소 이외의 요소를 돌려주고있는 것을 의미합니다. Google 검색 및 스택 오버플로가 있지만 이에 대한 설명을 찾을 수 없습니다.
도움을 주시면 감사하겠습니다.
너무 감사합니다! 나는 모든 @XmlRootElement 어노테이션이 루트를 가리켜 야한다는 인상 아래에 있었다. – Harrison