使用Jackson XML映射器将Java List序列化为XML

嗨,我需要使用Jackson-dataformat XMLMapper从JAVA创建XML。 XML应该是这样的

 1 Mighty Pulpo  austin TX   Hong Kong Hong Kong   

但我总是喜欢额外的“ ”标签。

  1 Mighty Pulpo   austin TX   Hong Kong Hong Kong    

我使用下面的代码来创建XML

 JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule(); XmlMapper mapper = new XmlMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); mapper.registerModule(jaxbAnnotationModule); mapper.registerModule(new GuavaModule()); String xml = mapper.writeValueAsString(customer); System.out.println(xml); 

有人可以帮帮我吗? 如何删除额外的标签呢。 我曾尝试使用@XmlElement,但它没有帮助。 TIA!

请尝试以下代码

 @JacksonXmlRootElement(localName = "customer") class Customer { @JacksonXmlProperty(localName = "id") private int id; @JacksonXmlProperty(localName = "name") private String name; @JacksonXmlProperty(localName = "addresses") @JacksonXmlElementWrapper(useWrapping = false) private Address[] address; //getters, setters, toString } class Address { @JacksonXmlProperty(localName = "city") private String city; @JacksonXmlProperty(localName = "state") private String state; // getter/setter } 

如果您不想在代码中的任何位置处理注释,则此设置会更改默认包装行为。

 XmlMapper mapper = new XmlMapper(); mapper.setDefaultUseWrapper(false); 

只是为了添加ManojP的答案,如果在变量声明中添加@JacksonXmlElementWrapper(useWrapping = false)不起作用(我就是这种情况),将它添加到getter方法就可以了。