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

标签 java xml jackson pojo xmlmapper

您好,我需要使用 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!!

最佳答案

试试下面的代码

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

关于java - 使用 Jackson XML 映射器将 Java 列表序列化为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27143936/

相关文章:

Java:Jackson 数据绑定(bind)无法从 JSON 文件映射整个类

java - Selenium从文件中读取测试数据?

java - dom4j XPath 无法解析 xhtml 文档

java - 使用 JMS,是否有任何方法可以在间歇性断开连接的客户端上存储消息,并在网络可用时将它们转发给代理?

xml - 出现在 Web 服务模式中的 tns

java - android Activity 的 onCreate 被调用了两次

android - 在 android 中运行 proguard 时 Jackson.jar 出错

json - 使用 jackson 反序列化惰性列表

java - Java 1.5 下 HTTP 连接超时

在 Azure 中部署时 Java SpringBoot 构建失败 - 无法执行 objective-c om.microsoft.azure :azure-webapp-maven-plugin:1. 1.0:deploy