2014-10-14 2 views
1

사용자 요구에 따라 여러 형식을 포함 할 수있는 XML 요소를 구문 분석해야합니다. 이 형식은 XSD에서 "any"요소로 구현됩니다.SimpleXML : 일치하는 모든 요소

나는 @XmlAnyElement 주석 JAXB와 함께 할 수 있다는 것을 발견했다 :

@XmlAnyElement 
protected List<Element> any; 

그러나 나는 그것이 간단한 XML 프레임 워크을 사용하여이 작업을 수행하는 방법을 알고 싶습니다. 가능한가? JAXB와 SimpleXml을 혼합해야합니까? http://ehc.ac/p/simple/mailman/message/33015962/

답변

1

SimpleXML을이 사용 사례에 대해 정확히 Element*Union 기능이 있습니다 :

여기에 단순 지원에서 같은 질문입니다. 어느 결과 1 또는 Result2 구현 인터페이스 Result의 목록을 매핑 다음, 한 번 봐 가지고 : 공통의 인터페이스를 가지고하는 것이 좋습니다 이유

@Root(name = "response", strict = false) 
public class Response { 

    @ElementListUnion({ 
      @ElementList(inline = true, type = Result1.class, required=false), 
      @ElementList(inline = true, type = Result2.class, required=false) 
    }) 
    private @Nullable List<Result> resultList; 

... 

SimpleXML을의 시도 및 하나 또는 다른 구현 결합을, 즉 귀하의 getters합니다. 물론 xml과 어떤 식 으로든 일치하는 모델을 작성해야하지만이 조합은 비즈니스/소프트웨어 도메인에 대한 이기종 데이터 입력을 줄이는 데 도움이 될 수 있습니다.

+0

도움을 주신 Andrea에게 감사드립니다. 입력 XML에 요소 (매개 변수 모델)가 포함될 수 있으므로 실제로 "모든"요소가 필요합니다. 지금은'strict = false' 만 사용하고 Java XML에서는 정보를 가져올 수 있지만 순수한 SimpleXML에서는 사용할 수 없습니다 ... – Bludwarf

+0

문제가 없습니다! 서버 측 코드를 제어 할 수 있다면 XML/Java 정적 유형 검사를보다 잘 지원하기 위해 매개 변수 형식을 제한 할 것입니다. 그러나 이것이 달성 될 수 없다면 당신은 다른 선택권이 없다고 생각합니다. –