1

smooks (バージョン 1.5.1) で、2 つの選択肢要素から生成された要素を 1 つだけ Java フィールドにマップすることは可能ですか?

例:

xsd ファイル:

<complexType name="timeType">
  <sequence>
    <choice minOccurs="1" maxOccurs="1">
    <element name="time"  minOccurs="0" maxOccurs="1">
      <complexType>
        <attribute name="v" type="dateTime"/>
      </complexType>
    </element>
    <element name="time2"  minOccurs="0" maxOccurs="1">
      <complexType>
        <attribute name="v" type="dateTime"/>
      </complexType>
    </element>
    </choice>
</complexType>

a) xml ファイル 1:

<parent>
  <time v="2001-12-31T12:00:00"/>  
</parent>

b) xml ファイル 2:

<parent> 
  <time2 v="2002-12-31T12:00:00"/>
</parent>

smooks マッピング

<jb:bean beanId="timeRef" class="someClass" createOnElement="parent">
  <!--  only if is generated (present) time element map this time element-->
  <jb:value property="fromHour" data="time/@v" decoder="DateTime" />

  <!-- only if is generated (present) time2 element map time2 element -->
  <jb:value property="fromHour" data="time2/@v" decoder="DateTime" />
</jb:bean>

生成された要素を 1 つだけ保存することを smooks に伝えるにはどうすればよいですか? ありがとう

4

1 に答える 1

1

私の解決策:

<jb:bean beanId="parentBeanId" class="parentMapClass" createOnElement="parentElement">
      ...
      <jb:wiring property="property" beanIdRef="timeRef" />
      <jb:wiring property="property" beanIdRef="timeIntervalRef" />
      ...
</jb:bean>

<jb:bean beanId="timeRef" class="someClass" createOnElement="parentElement/time">
      <jb:value property="fromHour" data="time/@v" decoder="DateTime" />
      <jb:value property="toHour" data="time/@v" decoder="DateTime" />
</jb:bean>

   <jb:bean beanId="timeIntervalRef" class="someClass" createOnElement="parentElement/timeInterval">
      <jb:value property="fromHour" data="timeInterval/@v" decoder="TimeIntervalFrom" />
      <jb:value property="toHour" data="timeInterval/@v" decoder="TimeIntervalTo" />
   </jb:bean>
于 2013-05-12T21:13:53.610 に答える