【发布时间】:2019-11-05 15:40:51
【问题描述】:
我正在使用 StaxEventItemWriter 写入 XML 文件。我期待将 xml 标记上的独立属性设置为 true。有没有设置的选项。
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
【问题讨论】:
标签: spring-batch
我正在使用 StaxEventItemWriter 写入 XML 文件。我期待将 xml 标记上的独立属性设置为 true。有没有设置的选项。
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
【问题讨论】:
标签: spring-batch
您可以扩展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 已经为version 和encoding 属性提供了setter,所以我相信它也可以为standalone 提供setter。这将使自定义 XML 声明比扩展编写器和覆盖 startDocument 更容易(如果我们忘记添加根元素,这种方式很容易出错,如答案所示)。我在这里创建了一个功能请求:jira.spring.io/browse/BATCH-2856。同时,您可以使用答案中的示例。