나는 다음과 같은 JAXB 엔티티가 : 유사한 구조로 직렬화JAXB - 크기 단체의 목록에 엔티티를 비 정렬 화하는 방법 1
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = EntityConstants.PARTNER)
public class FilePartner
{
@XmlAttribute(name = EntityConstants.IDENTIFIER, required = true)
private String identifier;
@XmlElement(name = EntityConstants.NAME)
private String name;
@XmlElement(name = EntityConstants.ROOT_PATH)
private String rootPath;
...
}
가 :
<file-partner identifier="foo">
<name>bar</name>
<root-path>path123</root-path>
...
</file-partner>
나는 또한 기업이를
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = EntityConstants.PARTNERS)
public class FilePartnerList
{
@XmlElement(name = EntityConstants.PARTNER)
private List<FilePartner> partners = new ArrayList<FilePartner>();
public List<FilePartner> getPartners()
{
return partners;
}
public void addPartners(List<FilePartner> partners)
{
this.partners.addAll(partners);
}
}
으로 직렬화 :
파트너 목록을 나타냅니다<partners>
<file-partner identifier="foo">
...
</file-partner>
<file-partner identifier="foo2">
...
</file-partner>
...
</partners>
I 즉, 하나의 목록 크기와 FilePartnerList 인스턴스에
<file-partner identifier="foo">
<name>bar</name>
<root-path>path123</root-path>
...
</file-partner>
의 형태로 XMLS를 직렬화하기 위해 JAXB의 Unmarshaller에 강제 할 수있는 방법을 찾고 있어요 :
JAXBContext context = JAXBContext.newInstance(FilePartner.class, FilePartnerList.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
InputStream inputStream = getResourceAsStream(filePartnerAsXml);
FilePartnerList partnerList = (FilePartnerList) unmarshaller.unmarshal(inputStream); // This SHOULD be unmarshalled to FilePartnerList instead of FilePartner
assertTrue(partnerList.getPartners().getSize().equals(1));
방법 나는 그것을 성취합니까?
나는 오해 받았다. 둘 이상의 하위가 포함 된 을 비 정렬 화해야 할 수도 있으므로 FilePartnerList에서 고정 크기를 사용하는 것은 불가능합니다. 필자가 바라는 부분은 하나의 태그가 포함되어있는 XML (par343)을 가지고있는 경우, 크기 1의 FilePartnerList로 비 정렬 화해야합니다. –
mdzh
여기를 살펴보십시오. https : //stackoverflow.com/questions/25067873/is-it-possible-to-define-an-attribute-of-an-xml-element-to-be-required-only-if-a 유효한 xsd를 사용하여 그 선택과 xjc와 자바 클래스를 만들 ... – inigoD