4

我正在尝试对 Spring 中 Jaxb2Marshaller 类的输出 XML 进行 PrettyPrint/indent/format 处理,即使我输入了 Web 上其他地方所见的属性,该文件仍然全部位于一行上。这是我的 bean 声明:

<bean id="pingerMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            ...
        </list>
    </property>
    <property name="marshallerProperties">
        <map>
            <entry>
                <key>
                    <util:constant static-field="javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT" />
                </key>
                <value type="java.lang.Boolean">true</value>
            </entry>
        </map>
    </property>
</bean>

还有作者:

<bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
    <property name="marshaller" ref="pingerMarshaller" />
    <property name="overwriteOutput" value="true" />
    <property name="resource" value="file:\C:\source\pinger\pingerExample.xml" />
</bean>

我错过了什么,还是这是一个错误?

4

2 回答 2

4

编组到 StAX和Marshaller.JAXB_FORMATTED_OUTPUT时不适用(这是我假设的意思)。如果您希望 JAXB 格式化结果,您将需要一个或基于目标(如果它们可用)。XMLStreamWriterXMLEventWriterorg.springframework.batch.item.xml.StaxEventItemWriterOutputStreamWriter

于 2013-10-11T14:41:33.393 回答
0

我知道这篇文章已经很老了,但即使我试图弄清楚在使用JAXB/Moxy marshalingand 和unmarshalingandXMLStreamWriter 时如何打印输出XMLEventWriter

我在这里发布答案,以便将来对其他人有用。以下方法可用于漂亮打印或美化XML.

如果您使用的是,XmlStreamWriter那么您可以使用IndentingXMLStreamWriter来漂亮地打印输出,如下所示:

private final XMLEventWriter xmlEventWriter = new IndentingXMLStreamWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(System.out));

这来自以下dependency软件包:

    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>txw2</artifactId>
      <version>3.0.1</version>
    </dependency>

因为XMLEventWriter你可以使用IndentingXMLEventWriter这样的:

private final XMLEventWriter xmlEventWriter = new IndentingXMLEventWriter(XMLOutputFactory.newInstance().createXMLEventWriter(System.out));

这来自以下依赖:

        <dependency>
            <groupId>net.java.dev.stax-utils</groupId>
            <artifactId>stax-utils</artifactId>
            <version>20070216</version>
        </dependency>
于 2021-06-14T13:43:32.980 回答