대답이 예 자체가 잘못되지 않는 것입니다,하지만 몇 가지 가능한 함정이 있습니다
는 예를 들어, 아래의 XML 문서를 구문 분석 할 때 groupDefintion하지 가 설정 될 수 있습니다. getter가 아닌 setter에 주석을 넣었습니다. @XmlAttribute에 대한 JavaDoc은 이에 대한 제한을 명시하지 않지만 다른 주석 (예 : @XmlID)은 특히 setter 또는 getter 중 하나만 주석을 허용하지만 둘 다를 허용하지는 않습니다.
@XmlAttribute는 요소가 아니라 특성을 필요로합니다. 또한 속성을 파싱하므로 복잡한 유형이 될 수 없습니다. EGroup은 열거 형 일 수 있습니다. 아마도?
나는 당신의 예제를 확장하고 일부 주장, 그리고 그것은 6
@XmlRootElement
@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.PROPERTY)
public class E {
private EGroup groupDefinition;
public EGroup getGroupDefinition() {
return groupDefinition;
}
@XmlAttribute
public void setGroupDefinition (EGroup g) {
groupDefinition = g;
}
public enum EGroup {
SOME,
OTHERS,
THE_REST
}
public static void main(String[] args) throws JAXBException {
JAXBContext jc = JAXBContext.newInstance(E.class);
E eOne = new E();
eOne.setGroupDefinition(EGroup.SOME);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
StringWriter writer = new StringWriter();
m.marshal(eOne, writer);
assert writer.toString().equals("<e groupDefinition=\"SOME\"/>");
E eTwo = (E) jc.createUnmarshaller().unmarshal(new StringReader(writer.toString()));
assert eOne.getGroupDefinition() == eTwo.getGroupDefinition();
}
}
당신이 구문 분석하려고하는 XML을 게시하시기 바랍니다 최신 자바를 사용하여, "내 컴퓨터에서"작동했다. – ekeren