java - Smooks - 如何将选择元素从 xml 映射到 java

标签 java binding smooks

在smooks(版本1.5.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>

我如何告诉 smooks,我只想保存一个生成的元素?谢谢

最佳答案

我的解决方案:

<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>

关于java - Smooks - 如何将选择元素从 xml 映射到 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16491117/

相关文章:

C#、WPF、将 List<string> 绑定(bind)到 DataGrid

java - 使用 smooks 将 EDI 消息映射到 XML 时遇到问题

java - 如何实现 list.list 以在 smooks 中列出副本

java - 在 Java 中克隆的目的

java - 异步服务器如何通过释放初始 I/O 线程来增加吞吐量?

java - 如果我只是为自己编写程序,还有什么理由使用 Gradle 吗?

java - Javers - 如何添加额外的提交元数据?

swift - NSSlider:如何同时发送值和 Action ?

wpf - Silverlight/WPF Viewmodel 最佳实践

java - 以编程方式将 csv 映射到 smooks 中的 java 无法处理空的 Double