0

给定一个.xsd文件,我的策略是使用 Maven 工具从中生成 Java 类,然后使用 Jackson 序列化数据。

我在用着:

  • org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.3生成 Java 类
  • com.fasterxml.jackson.dataformat.xml.XmlMapper(2.9.2) 用new JaxbAnnotationModule()序列化

生成代码示例:

@XmlElement(required = true)
protected List<TLocalizedString> title;

使用示例:

TLocalizedString tls = new TLocalizedString();
tls.setValue( string );
tls.setLocale( LOCALE );
item.getTitle().add( tls );

我们得到:

<item ....>
    <title>
        <title locale="en_US">The Title</title>
    </title>

我们的预期:

<item ....>
    <title locale="en_US">The Title</title>

换句话说,XML 是嵌套的。

这是应该控制的东西:

  • 在使用点的代码中?
  • 在杰克逊序列化程序的配置中?
  • 在通过配置或生成标志生成代码?
  • 在代码生成中通过.xsd更改?
4

1 回答 1

0

终于找到了答案。我看过很多使用这个配置的例子,但不知道它实际上在做什么。正是这个错误报告通过这句话给了我线索

列表的包装元素

XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setDefaultUseWrapper( false ); // This prevents unnecessary nesting of XML elements
于 2018-05-08T18:41:16.867 回答