2013-03-20 2 views
3

간단한 프레임 워크를 통해 xml을 desrialize하려고합니다. 유형이 런타임에만 알려질 두 목록이 있습니다. 그래서 @ ElementListUnion을 사용했습니다.단순 XML ElementListUnion - 허용되지 않는 두 개의 일반 목록?

Customer.java 

@ElementListUnion({@ElementList(inline = true,type=Thing.class),@ElementList(inline = true,type=AnotherThing.class)}) 
List<Object> things; 


@ElementListUnion({@ElementList(inline = true,type=Thing.class),@ElementList(inline = true,type=AnotherThing.class)}) 
List<Object> anotherthings ; 

그러나 임

03-20 19:36:20.534: E/AndroidRuntime(2764): Caused by: 
org.simpleframework.xml.core.PersistenceException: Duplicate annotation of name 
'thing' on @org.simpleframework.xml.ElementListUnion(value= 
[@org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, 
    name=, 
required=true, type=class com.data.Thing), 
@org.simpleframework.xml.ElementList(data=false, 
empty=true, entry=, inline=true, name=, required=true, type=class 
com.data.AnotherThing)]) 
on field 'things' java.util.List com.data.Customer.things 

이 도와주세요 다음과 같은 예외를 받고.

답변

2

entry의 값을 설정하지 않았으므로 Simple은 사용중인 클래스를 결정할 수 없습니다.

@Root(name = "Customer") 
public class Customer 
{ 
    @ElementListUnion(
    { 
     @ElementList(entry = "thingValue", inline = true, type = Thing.class), 
     @ElementList(entry = "anotherThingValue", inline = true, type = AnotherThing.class) 
    }) 
    List<Object> things; 


    @ElementListUnion(
    { 
     @ElementList(entry = "thingValue", inline = true, type = Thing.class), 
     @ElementList(entry = "anotherThingValue", inline = true, type = AnotherThing.class) 
    }) 
    List<Object> anotherthings; 

} 

@ElementListentry를 필요로하는 요소에 사용되는 태그 먹으 렴 각 : 여기를 참조하십시오

<Customer> 
    <thingValue>...<thingValue/>     <!-- That's a 'Thing' --> 
    <anotherThingValue>...<anotherThingValue/> <!-- That's an 'AnotherThing' --> 
</Customer> 

을하지만 당신은 클래스와 같은 entry 이름을 해달라고 슈어을, 그래서 entry = "thing"이 실패 할 수 있습니다.