【问题标题】:StaxEventItemWriter XML HeaderStaxEventItemWriter XML 标头
【发布时间】:2019-11-05 15:40:51
【问题描述】:

我正在使用 StaxEventItemWriter 写入 XML 文件。我期待将 xml 标记上的独立属性设置为 true。有没有设置的选项。

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    您可以扩展StaxEventItemWriter 并覆盖startDocument 方法。这是一个例子:

    @Bean
    public StaxEventItemWriter<Person> itemWriter() {
        StaxEventItemWriter<Person> itemWriter = new StaxEventItemWriter<Person>() {
            @Override
            protected void startDocument(XMLEventWriter writer) throws XMLStreamException {
                writer.add(createXmlEventFactory().createStartDocument(DEFAULT_ENCODING, DEFAULT_XML_VERSION, true));
                writer.add(xmlEventFactory.createStartElement(getRootTagNamespacePrefix(), getRootTagNamespace(), getRootTagName()));
            }
        };
        // TODO set other properties on the writer
        return itemWriter;
    }
    

    【讨论】:

    • StaxEventItemWriter 已经为versionencoding 属性提供了setter,所以我相信它也可以为standalone 提供setter。这将使自定义 XML 声明比扩展编写器和覆盖 startDocument 更容易(如果我们忘记添加根元素,这种方式很容易出错,如答案所示)。我在这里创建了一个功能请求:jira.spring.io/browse/BATCH-2856。同时,您可以使用答案中的示例。
    • 这个听起来很完美,我同时切换回 jaxb,会检查一下
    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多