使用StaxEventItemWriter的多个根元素编写xml

时间:2014-09-22 16:05:07

标签: xml spring-batch

我输入了具有以下结构的xmls文件。我能够使用三个不同的步骤阅读Header,Data和Trailer,其中包括数据库中的作业和持久数据。我能够从数据库中读取数据并将这些元素写入三个不同的输出文件中,但是,我需要创建与输入文件结构相同的输出文件。如何组合Header,Data和Trailer并使用StaxEventItemWriter创建输出xml文件? 更新 - 只有一个Header和Trailer实例,Data元素将为1到n。

<?xml version="1.0" encoding="UTF-8"?>
<rootelement>
    <Header>
        <element1>value</element1>
        <element2>value</element2>
    </Header>
    <Data>
        <element1>value</element1>
        <element2>value</element2>
    </Data>
    <Data>
        <element1>value</element1>
        <element2>value</element2>
    </Data>
    <Data>
        <element1>value</element1>
        <element2>value</element2>
    </Data>
    <Trailer>
        <element1>value</element1>
        <element2>value</element2>
    </Trailer>
</rootelement>

1 个答案:

答案 0 :(得分:0)

查看StaxEventItemWriter中的页眉和页脚回调。您正在描述的用例正是它的用途。您的根标记名称将是rootElement,然后您将实现两个StaxWriterCallback,一个用于标头,另一个用于预告片。您可以在此处的单元测试中查看标题的示例:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemWriterTests.java#L347

您可以在此处的文档中详细了解StaxWriterCallbackhttp://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/xml/StaxWriterCallback.html