簡體   English   中英

序列化XML嵌套在自動生成的Java類中

[英]Serialized XML is nested from auto-generated Java classes

給定一個.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是嵌套的。

這是應該控制的東西嗎?

  • 在代碼中使用點?
  • 在Jackson序列化器的配置中?
  • 通過配置或生成標志生成代碼?
  • 通過.xsd在代碼生成中進行更改?

終於找到答案了。 我已經看到了許多使用此配置的示例,但不知道它實際上在做什么。 這個錯誤報告通過以下短語為我提供了線索

列表的包裝器元素

XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setDefaultUseWrapper( false ); // This prevents unnecessary nesting of XML elements

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM