簡體   English   中英

Jackson XML 在根標簽下具有不同的元素名稱和屬性

[英]Jackson XML with different element name and attributes under root tag

I'm new to Jackson XML and I have a requirement of constructing a Jackson XML with different element name and attributes but under same root element.

我的預期 xml output

<item name="Whatever">
 <problem_id id="12312"/>
 <problem_type type="1765"/>
 <problem_desc desc="faulty"/>
 </item>

我的 pojo class (不知道如何添加剩余的元素和屬性)

@JacksonXmlRootElement(localName = "item")
public class ItemsDTO {

     @JacksonXmlProperty(localName = "name",isAttribute = true)
     private String name="Whatever";

}

任何建議將不勝感激。

為此,您可能需要像已經完成的那樣實現更多類,然后將相關屬性添加到容器 class ItemsDTO

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

@JacksonXmlRootElement(localName = "item")
public class ItemsDTO {

    @JacksonXmlProperty(isAttribute = true)
    private String name = "Whatever";

    @JacksonXmlProperty(localName = "problem_id")
    private ProblemId problemId = new ProblemId();

    @JacksonXmlProperty(localName = "problem_type")
    private ProblemType problemType = new ProblemType();

    @JacksonXmlProperty(localName = "problem_desc")
    private ProblemDesc problemDesc = new ProblemDesc();
}

class ProblemId {
    @JacksonXmlProperty(isAttribute = true)
    private int id = 12312;
}

class ProblemType {
    @JacksonXmlProperty(isAttribute = true)
    private int type = 1765;
}

class ProblemDesc {
    @JacksonXmlProperty(isAttribute = true)
    private String desc = "faulty";
}

雖然最好有一個較短的 XML output ,並將problem的屬性“封裝”在這樣的單個元素中:

<item name="Whatever">
  <problem id="12312" type="1765" desc="faulty"/>
</item>

這可以通過以下代碼實現:

@JacksonXmlRootElement(localName = "item")
public class ItemDTO {

    @JacksonXmlProperty(isAttribute = true)
    private String name = "Whatever";

    @JacksonXmlProperty
    private Problem problem = new Problem();
}

class Problem {
    @JacksonXmlProperty(isAttribute = true)
    private int id = 12312;

    @JacksonXmlProperty(isAttribute = true)
    private int type = 1765;

    @JacksonXmlProperty(isAttribute = true)
    private String desc = "faulty";
}

暫無
暫無

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

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