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

新手上路,请多包涵

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

<Customer>
  <id>1</id>
  <name>Mighty Pulpo</name>
    <addresses>
      <city>austin</city>
      <state>TX</state>
    </addresses>
    <addresses>
      <city>Hong Kong</city>
      <state>Hong Kong</state>
    </addresses>
</Customer>

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

 <Customer>
  <id>1</id>
  <name>Mighty Pulpo</name>
<addresses>
    <addresses>
      <city>austin</city>
      <state>TX</state>
    </addresses>
    <addresses>
      <city>Hong Kong</city>
      <state>Hong Kong</state>
    </addresses>
<addresses>
</Customer>

我正在使用下面的代码来创建 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!!

原文由 Sharmistha Sinha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
2 个回答

试试下面的代码

@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;

    // you can add it on getter method instead of declaration.
    @JacksonXmlElementWrapper(useWrapping = false)
    public Address[] getAddress(){
        return address;
   }

   //getters, setters, toString
}

class Address {

    @JacksonXmlProperty(localName = "city")
    private String city;

    @JacksonXmlProperty(localName = "state")
    private String state;
    // getter/setter
}

原文由 ManojP 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 A Kunin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题