Spring 从数据库中批量提取 xml 条记录

Spring batch extract xml record from database

我有一个包含三列的数据库 Table:id、描述和日期,id 列是数字,描述列是一个包含 xml 行和日期列的字符串。 描述栏是这样的:

  <catalog_item >
         <item_number>QWZ5671</item_number>
         <price>39.95</price>
         <size description="Medium">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
         </size>
         <size description="Large">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
         </size>
  </catalog_item>
  <catalog_item >
         <item_number>RRX9856</item_number>
         <price>42.50</price>
         <size description="Small">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
            <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
         </size>
         <size description="Medium">
            <color_swatch image="red_cardigan.jpg">Red</color_swatch>
            <color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
         </size>

  </catalog_item>

具有多个嵌套标签。 所有标签都写在描述栏的同一条记录中。 我可以写一个 select 语句来从数据库中读取记录,但在这种情况下,我将有一个自定义对象,其中包含描述列中的整行,有没有办法提取所有这些节点xml 行分成单独的 java 个字段,spring 个批次。

谢谢。

这不是真正的 spring-batch 将 XML 文件转换为 DTO(或任何 java bean)的工作,您应该使用 Jaxb(或任何其他 XML映射库)。

至于 spring-batch,您可以在 FieldSetMapperreaderprocessor 之间映射对象的组件)中调用 Jaxb。