저는 Castor를 사용하여 사용자 ID 맵을 시간 간격으로 작성합니다. 나는 그것을 저장하고 긴 작업에서 진행을 재개하기 위해 사용하고 있으며 가능한 XML을 작게하려고 노력 중이다. 내 맵은 문자열 userID에서 인터벌 타임 스탬프가 들어있는 클래스와 직렬화 할 필요가없는 추가 임시 데이터를 사용합니다.Castor를 사용하여 오브젝트를 컴팩트하게 직렬화하려고 시도합니다.
...
<field name="userIntervals" collection="map">
<bind-xml name="u">
<class name="org.exolab.castor.mapping.MapItem">
<field name="key" type="string"><bind-xml name="n" node="attribute"/></field>
<field name="value" type="my.package.TimeInterval"/>
</class>
</bind-xml>
</field>
...
<class name="my.package.TimeInterval">
<map-to xml="ti"/>
<field name="intervalStart" type="long"><bind-xml name="s" node="attribute"/></field>
<field name="intervalEnd" type="long"><bind-xml name="e" node="attribute"/></field>
</class>
...
과 같습니다 출력을 얻을 :
내가 중첩 클래스 매핑을 사용할 수있어내가 원하는 것은 이름입니다
<u n="36164639"><value s="1292750896000" e="1292750896000"/></u>
을, 시작과 끝 이런 단일 노드의 사용자.
<u n="36164639" s="1292750896000" e="1292750896000"/>
하지만 시작과 끝은 "값"은 "키"와 같은 노드 이동 속성 때문에 그것을 변통 수없는 것. 어떤 아이디어라도 대단히 감사하겠습니다.
하나의 (약간 결함이있는) 접근은'value'에 대한 커스텀'FieldHandler'를 가지고 있다고 생각했습니다 -하지만 시작과 종료 시간을 하나의 속성에 넣어야합니다. 내가 원하는 것보다 조금 더 작고;) –