2

我正在尝试使用 Jackson 将简单对象序列化为 XML,但在关闭空 XML 元素时遇到问题。我明白了

<SimplePojo name="simpleName">
</SimplePojo>

但我想要这个

<SimplePojo name="simpleName"/>

如果有它的设置,我找不到它。任何帮助将不胜感激。


public class SimplePojo
{
    public SimplePojo(String name)
    {
        this.name = name;       
    }

    @JacksonXmlProperty(isAttribute = true)
    private String name;

    public String getName()
    {
        return this.name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    @JsonInclude(Include.NON_EMPTY) 
    private String property;

    public String getProperty()
    {
        return property;
    }

    public void setProperty(String property)
    {
        this.property = property;
    }
}

我正在使用这样的类:

 JacksonXmlModule module = new JacksonXmlModule();
    module.setDefaultUseWrapper(false);

    XmlMapper xmlMapper = new XmlMapper(module); 
    xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    SimplePojo simple = new SimplePojo("simpleName");
    //simple.setProperty("something");

    String res = xmlMapper.writeValueAsString(simple);

编辑: 这是我正在使用的罐子的列表

杰克逊罐

4

2 回答 2

1

我也在使用 2.3.1 和 2.2.3 版本的jackson-data-format-xml. Woodstox设法通过添加与您相同的罐子来解决它。所以很确定修复与缩进无关。

如果你不确定你是否在使用Woodstox,你明确地创建一个woodstoxXMLFactory并在你的XMLMapper

XmlFactory xmlFactory = new XmlFactory(new WstxInputFactory(), new WstxOutputFactory());
XmlMapper mapper = new XmlMapper (xmlFactory, module);

祝你好运!

于 2014-01-08T13:20:04.130 回答
0

一种可能的尝试是确保您使用WoodstoxStax 实现,而不是 JDK 提供的默认实现(Sun 的 SJSXP)。Woodstox 更全面,我认为如果可能的话,它还隐式使用空元素,而我认为 SJSXP 不会。

于 2013-07-11T00:20:13.263 回答