当前位置: 首页 > 知识库问答 >
问题:

使用Jackson将POJO序列化为xml时删除xml包装器

司空温书
2023-03-14

我必须接受一个java对象并将其序列化为xml字符串。expect xml必须如下所示:

 <close_trailer_results>  
     <detl_code_load_cond_stat>CLSD</detl_code_load_cond_stat>  
     <detl_code_serv_type>GND</detl_code_serv_type>  
     <detl_code_due_sort>PRE</detl_code_due_sort>   
     <due_dt_gmt>2018-12-12 08:00:00</due_dt_gmt>   
     <org_id_next_sort>441</org_id_next_sort>  
 </close_trailer_results>

实际的xml如下所示:

> <close_trailer_results>
>     <LoadCloseTrailerResponseXml> 
>        <detl_code_load_cond_stat>CLSD</detl_code_load_cond_stat> 
>        <detl_code_serv_type>OVN</detl_code_serv_type> 
>        <detl_code_due_sort>MID</detl_code_due_sort>
>        <due_dt_gmt>2019-03-19 07:59:43</due_dt_gmt> 
>        <org_id_next_sort>61</org_id_next_sort>
>     </LoadCloseTrailerResponseXml> </close_trailer_results
@JsonPropertyOrder({"detl_code_load_cond_stat", "detl_code_serv_type", "detl_code_due_sort", "due_dt_gmt", "org_id_next_sort"})
 public class LoadCloseTrailerResponseXml {

        private String detl_code_load_cond_stat;    
        private String detl_code_serv_type; 
        private String detl_code_due_sort;
        private String due_dt_gmt;
        private Integer org_id_next_sort;
      ...just getters and setters
    }
XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.setSerializationInclusion(Include.NON_NULL);

        LoadCloseTrailerResponseXml responseTrailer = new LoadCloseTrailerResponseXml();
        responseTrailer.setDetl_code_load_cond_stat(trailerResponse.getTrailer().getDetlCodeLoadCondStat());
        responseTrailer.setDetl_code_serv_type(trailerResponse.getTrailer().getDetlCodeServType());
        responseTrailer.setDetl_code_due_sort(trailerResponse.getTrailer().getDetlCodeDueSort());
        responseTrailer.setDue_dt_gmt(trailerResponse.getTrailer().getDueDateGmt());
        responseTrailer.setOrg_id_next_sort(trailerResponse.getTrailer().getOrgIdNextSort());
JacksonXmlModule xmlModule = new JacksonXmlModule();
xmlModule.setDefaultUseWrapper(false);
ObjectMapper xmlMapper = new XmlMapper(xmlModule);
xmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);

共有1个答案

廉雅惠
2023-03-14

我在网上读到,当从POJO创建xml文件时,Jackson会在xml文件中添加根标记,无论您是否设置根标记。如果不设置,它将是类名。我的解决方案是创建具有这些根标记的xml字符串,并执行一个字符串函数来删除根标记。

 类似资料:
  • 问题内容: 使用Jackson XmlMapper注释,如何将XML反序列化为pojo? 我试图使用这样的东西: 当我尝试使用XmlMapper的readValue()时,出现以下错误: 问题答案: 您的课程与您的课程不符。结构比您想象的要简单。请参见以下示例: 简单用法: 上面的程序打印(适用于您): 也可以看看: jackson-dataformat-xml。 主页:Jackson XML d

  • 问题内容: 嗨,我需要使用Jackson数据格式XMLMapper从JAVA创建XML。XML应该像 但我总是喜欢使用额外的“ <地址> 问题答案: 试试下面的代码

  • 问题内容: 我正在使用Jackson XML映射器将XML反序列化为POJO。XML看起来像 我的课看起来像 我想将电话号码设置为“电话”类别中的号码。我无法更改XML或类的构造方式。我收到无法构造错误的实例,并创建了一个AgencyPhone构造函数 但这没有用。那么如何反序列化嵌套实例。 问题答案: 您可以编写自己的自定义解串器来实现此目的。这是使您入门的代码:

  • 我正在使用来自另一个web服务的XML数据进行java项目。我是杰克逊框架的新手。创建POJO文件,但在映射时会显示错误,如无法识别的字段列。我不知道如何映射我的反应 XML响应 细胞集类 排课 细胞类 帮我解决这个问题。

  • 如果我使用jackson dataformat xml序列化JsonNode的ArrayList,它会产生以下结果: 我想把它读出来: 我尝试过使用自定义序列化程序,并确实给了我