2012-01-30 4 views
4

나는 나의 자바 클래스에 다음 XML을 매핑 org.simpleframework.xml.ElementMap를 사용하는 것을 시도하고있다 :org.simpleframework.xml.ElementMap의 올바른 사용법?

<my_map class="java.util.HashMap"> 

    <my_entry id="one" other_attribute="abc"> 
      <my_entry_element>blahblah one</my_entry_element> 
    </my_entry> 

    <my_entry id="two" other_attribute="def"> 
     <my_entry_element>blahblah two</my_entry_element> 
    </my_entry> 

</my_map> 

그러나, 내가 어떤 해결책을 찾을 수 없습니다.

@Root(name="my_root_class") 
public class MyRootClass { 

    @ElementMap(name="my_map" 
      ,key="id" 
      ,keyType=String.class 
      ,valueType=MyEntry.class 
      ,attribute=true 
      ,inline=false 
      ) 
    private Map<String, MyEntry> myEntries = new HashMap<String, MyEntry>(); 

    // ... (getters/setters/..) 

} 
:

<my_map class="java.util.HashMap"> 

    <entry id="one"> 
     <my_entry id="one" other_attribute="abc"> 
      <my_entry_element>blahblah one</my_entry_element> 
     </my_entry> 
    </entry> 

    <entry id="two"> 
     <my_entry id="two" other_attribute="def"> 
      <my_entry_element>blahblah two</my_entry_element> 
     </my_entry> 
    </entry> 

</my_map> 

XML의 위 부분은 다음과 같은 자바 래퍼와 함께 잘 작동 : 가까이 내가 얻을 수있는이 같은 중복 <entry id="xyz"> ... </entry> 내부의 각 항목을 둘러싸이다

요소가 올바르게 매핑되었습니다.

MyRootClass [ 
    two: MyEntry [id=two, otherAttribute=def, myEntryElement=blahblah two] 
    one: MyEntry [id=one, otherAttribute=abc, myEntryElement=blahblah one] 
] 

그런 다음 "inline = true"를 설정하고 중복 <entry>을 제거하려고합니다. 인라인 = "참", 항목을 "my_entry"으로 설정하고이 메시지의 맨 위에 소개 한 첫 번째 XML을 사용하면 (실제로 사용할 수 있기를 원합니다) 나는 오류 얻을 : 나는 또한 <entry> (기본 일)에 XML 파일에 <my_entry> 이름을 변경 값 = "my_entry" 또는 노는 시도

ExceptionUnable to satisfy @org.simpleframework.xml.ElementMap(keyType=class java.lang.String, inline=true, entry=my_entry, name=my_map, data=false, empty=true, value=, attribute=true, valueType=class com.mycomp.thomas.simpleXml.MyEntry, required=true, key=id) on field 'myEntries' private java.util.Map com.mycomp.thomas.simpleXml.MyRootClass.myEntries for class com.mycomp.thomas.simpleXml.MyRootClass at line 1 

를, 아무것도 작동하지 않습니다.

@ElementMap에서 사용하는 권한 매개 변수를 사용하여이 게시물 맨 위에 소개 된 XML을 만들 수 있습니까?

답변

관련 문제