2017-10-07 3 views
0

바꿀 수없는 외부 API에서 xml 파일을 받고 있습니다. Item Reader에서 Spring job을 사용하여 Drug을 하나씩 검색합니다. 내 문제는 Pack 목록에 비 정렬 화하는 것, 올바르게 주석을 달아서 이제까지 마약을위한 태그 사이에 포함 된 객체로 채워지는 방법. 가장 좋은 시나리오는 아래에 표시된 구성의 List로 null입니다. 마약이 마약의 목록을 포함하여 팩 (또는이 구조가 실현 가능하지 않은 경우 다른 구조)의 목록을 포함하는 방법. 마약을 나타내는 클래스. 여기 Jaxb 비 정렬 목록이 null입니다.

//Lombok annotation generating getters/setters, constructors (boiler plate), shouldn't be harmful 
@Data 
@NoArgsConstructor 
@AllArgsConstructor 

@XmlRootElement(name = "drugs", namespace = "http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class ExternalDrug { 

    @XmlAttribute(name = "name") 
    private String name; 

    @XmlAttribute(name = "type") 
    private DrugType type; 

    @XmlElementWrapper(name = "packs") 
    @XmlElement(name = "pack") 
    private List<Pack> packs; 
} 

그리고

//Again boiler plate 
@Data 
@NoArgsConstructor 
@AllArgsConstructor 

@XmlRootElement(name = "Packs") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Pack { 

    @XmlAttribute(name = "size") 
    private List<Pack> ; 
} 

는 그래서 그들은 그러나 나는 약간의 실수가 이렇게 할 수있는 다른 사람들을 위해 쉽게 읽을 수있을 것입니다 내가 영어로 파일을 변환 명심하시기 바랍니다 간다.

+0

처럼 XMLElementWrapper 및 목록 요소에 네임 스페이스를 추가 한 후 그것은 작동한다'XML은'크기 = "4 표시 "' – varren

+0

가끔 크기가 정수가 아니므로 String에 안전하게 매핑했습니다. – Herioz

답변

0

`@XmlAttribute (이름 = "크기") 개인 목록 왜이

@XmlElementWrapper(name="packs", namespace = "http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0") 
@XmlElement(name="pack", namespace ="http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0") 
private List<Pack> packs; 
+0

감사합니다. – Herioz

관련 문제