我正在尝试使用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);
修改 这是我正在使用的罐子列表
答案 0 :(得分:1)
我也使用2.3.1和2.2.3版本的jackson-data-format-xml
来解决这个问题。通过添加与您相同的Woodstox
罐来管理解决它。所以很确定修复与缩进无关。
如果您不确定是否使用Woodstox
,则明确创建woodstox XMLFactory
并在XMLMapper
XmlFactory xmlFactory = new XmlFactory(new WstxInputFactory(), new WstxOutputFactory());
XmlMapper mapper = new XmlMapper (xmlFactory, module);
祝你好运!
答案 1 :(得分:0)
要尝试的一件事是确保使用Woodstox
作为Stax实现,而不是JDK提供的默认值(Sun的SJSXP)。 Woodstox总体上更好,我认为如果可能的话它也隐含地使用空元素,而我认为SJSXP不会。