根标记下具有不同元素名称和属性的Jackson XML



我是Jackson XML的新手,我需要构建一个具有不同元素名称和属性但位于相同根元素下的Jackson XML。

我的预期xml输出

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

我的pojo类(不确定如何添加剩余的元素和属性(

@JacksonXmlRootElement(localName = "item")
public class ItemsDTO {
@JacksonXmlProperty(localName = "name",isAttribute = true)
private String name="Whatever";
}

如有任何建议,不胜感激。

要做到这一点,您可能需要像已经实现的那样实现更多的类,然后将相关属性添加到容器类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";
}

尽管最好将problem的属性"封装"在一个元素中的更短的XML输出中,如下所示:

<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";
}

最新更新