来自Spring批处理Jaxb2Marshaller-Marshall.JAXB_FORMACTED_OUTPUT的XML输出不起作用,为什么?

发布时间:2022-08-15 / 作者:清心寡欲
本文介绍了来自Spring批处理Jaxb2Marshaller-Marshall.JAXB_FORMACTED_OUTPUT的XML输出不起作用,为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在进行将MongoDB转换为XML的Spring批处理。我有以下两个代码片段。

首先:


    
        com.mkyong.model.Report
    
    
        
            
                
                    
                
                true
            
        
    

第二个


    
        com.mkyong.model.Report
    

两种配置都没有格式化输出文件。结果只打印在一行XML文件中。我原以为第一个配置将格式化结果,但事实并非如此。

JAXB_FORMATTED_OUTPUT用于指定编组的XML数据是否使用换行符和缩进进行格式化的属性的名称。但不幸的是,这种情况并未发生。

我在单行XML文件中看到的输出:

pom.xml


    
    1.7
    UTF-8
    UTF-8

    4.3.5.RELEASE
    3.0.7.RELEASE
    1.8.4.RELEASE
    3.1.1

    
    1.0.13
    1.7.5
    1.7.12

    
    4.12




    
    
        org.springframework
        spring-core
        ${spring.version}
    

    
    
        org.springframework
        spring-oxm
        ${spring.version}
    

    
    
        org.springframework.batch
        spring-batch-core
        ${spring.batch.version}
    
    
        org.springframework.batch
        spring-batch-infrastructure
        ${spring.batch.version}
    

    
    
        org.springframework.batch
        spring-batch-test
        ${spring.batch.version}
    

    
    
        org.mongodb
        mongo-java-driver
        ${mongodb.driver.version}
    

    
    
        org.slf4j
        slf4j-api
        ${slf4j.version}
        compile
    
    
        ch.qos.logback
        logback-classic
        ${logback.version}
        runtime
    
    
        org.slf4j
        jcl-over-slf4j
        ${jcl.slf4j.version}
    

    
    
        org.springframework.data
        spring-data-mongodb
        ${spring.data.version}
    

    
        javax.xml.bind
        jaxb-api
        2.2.12
    


    
    
        junit
        junit
        ${junit.version}
        test
    

    
    
        org.testng
        testng
        6.8.5
        test
    

我正在使用以下内容:


    
    
    
    
    
    
    

根据Karthik的输入:

encoding="ISO-8859-1"?>

    01-06-2013
    139237
    40
    220.90
  
    02-06-2013
    339100
    60
    320.88
  
    03-06-2013
    431436
    76
    270.80
  
    12-03-2016
    534987
    43
    454.80
  

推荐答案

看这个JIRA Ticket,这个问题在春批中还没有修复。但是,有解决此问题的方法。

添加maven依赖项。


    net.java.dev.stax-utils
    stax-utils
    20070216

创建自定义类。

public class IndentingStaxEventItemWriter  extends StaxEventItemWriter {

      private boolean indenting = true;

      @Override
      protected XMLEventWriter createXmlEventWriter( XMLOutputFactory outputFactory, Writer writer) throws XMLStreamException {
        if (indenting) {
          return new IndentingXMLEventWriter( super.createXmlEventWriter( outputFactory, writer ) );
        }
        else {
          return super.createXmlEventWriter( outputFactory, writer );
        }
      }

    public boolean isIndenting() {
        return indenting;
    }

    public void setIndenting(boolean indenting) {
        this.indenting = indenting;
    }

}

修改您的EventWriter


    
    
    
    
    
    
    

这篇关于来自Spring批处理Jaxb2Marshaller-Marshall.JAXB_FORMACTED_OUTPUT的XML输出不起作用,为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活!



[英文标题]The XML output from the Spring Batch Jaxb2Marshaller - Marshaller.JAXB_FORMATTED_OUTPUT is not working, why?


声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。