如何强制Jackson关闭空XML元素?

如何强制Jackson关闭空XML元素?,xml,serialization,jackson,Xml,Serialization,Jackson,我试图使用Jackson将简单对象序列化为XML,但在关闭空XML元素时遇到问题。 我明白了 <SimplePojo name="simpleName"> </SimplePojo> 我使用这样的类: JacksonXmlModule模块=新的JacksonXmlModule(); module.setDefaultUseWrapper(false); XmlMapper XmlMapper=新的XmlMapper(模块); configure(Serializatio

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

<SimplePojo name="simpleName">
</SimplePojo>
我使用这样的类:

JacksonXmlModule模块=新的JacksonXmlModule();
module.setDefaultUseWrapper(false);
XmlMapper XmlMapper=新的XmlMapper(模块);
configure(SerializationFeature.INDENT_输出,true);
SimplePojo simple=新的SimplePojo(“simpleName”);
//简单。设置属性(“某物”);
String res=xmlMapper.writeValueAsString(简单);
编辑: 这是我正在使用的罐子的列表


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

我还使用了2.3.1和2.2.3版本的
jackson数据格式xml
。通过添加与您相同的
Woodstox
jar来解决此问题。所以很确定修复与缩进无关

如果您不确定是否正在使用
Woodstox
,请显式创建一个Woodstox
XMLFactory
,并在
XMLMapper

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

祝你好运

我添加了一张我依赖的图片。我想我是在幕后使用Woodstox(没有例外的罐子),好的,谢谢。那么,您确实使用了所有推荐的产品。我模模糊糊地回忆起之前的一个请求wrt empty elements。。。需要查看项目问题跟踪程序以记住详细信息。这应该是可行的,FWIW。你指的是:可能。问题#45的单元测试实际上验证了在没有字符内容的情况下是否使用了空元素。也许我可以重现你们的问题。问题是缩进:如果强制缩进,将添加换行。否则,将输出空元素。很难说这是否可以改变(缩进逻辑可能没有足够的信息知道要做什么,如果有的话),但也许这可以得到改进。在我的例子中,仅向类路径添加库并没有让jackson使用woodstox库,但从工厂生成映射器就做到了。谢谢!
XmlFactory xmlFactory = new XmlFactory(new WstxInputFactory(), new WstxOutputFactory());
XmlMapper mapper = new XmlMapper (xmlFactory, module);