问题描述
我正在使用JAXB使用JAXB将Java对象转换为XML字符串
@XmlRootElement(name = "mainDto")
@AllArgsConstructor
@Getter
@Setter
public class MainDto {
@XmlElement(name = "dto1")
List<ChildDto1> dto1;
@XmlElement(name = "dto2")
List<ChildDto1> dto3;
@XmlElement(name = "dto1")
List<ChildDto1> dto1;
public interface ChildDto {}
@AllArgsConstructor
@XmlRootElement(name = "dto1")
@NoArgsConstructor
@Getter @Setter
public static class ChildDto1 implements ChildDto {
@XmlAttribute(name = "type1")
private String type;
}
@AllArgsConstructor
@XmlRootElement(name = "dto2")
@NoArgsConstructor
@Getter @Setter
public static class ChildDto2 implements ChildDto {
@XmlAttribute(name = "type2")
private String type;
@XmlElements({
@XmlElement(name = "dto1",type = ChildDto1.class),@XmlElement(name = "dto2",type = ChildDto2.class),@XmlElement(name = "dto3",type = ChildDto3.class)
})
private List<ChildDto> dtos;
}
@AllArgsConstructor
@XmlRootElement(name = "dto3")
@NoArgsConstructor
@Getter @Setter
public static class ChildDto3 implements ChildDto {
@XmlAttribute(name = "type3")
private String type;
@XmlElements({
@XmlElement(name = "dto1",type = ChildDto3.class)
})
private List<ChildDto> dtos;
}
}
现在我的ChildDto3
对象在下面
ChildDto3 dto3 = new ChildDto3();
dto3.setType("dto3Type");
ChildDto1 dto1 = new ChildDto1();
dto1.setType("dto1Type");
List<ChildDto> dtos = new ArrayList<>();
dtos.add(dto1);
dto3.setDtos(dtos);
要将Java对象转换为XML,我正在使用以下代码
XmlMapper mapper = new XmlMapper(module);
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.registerModule(new JaxbAnnotationModule());
String xml = mapper.writer().writeValueAsstring(dto3);
此对象将转换为xml以下
<dto3 type3="dto3Type">
<dtos>
<dto1 type1="dto1Type"></dto1>
</dtos>
</dto3>
但是我想要下面的XML
<dto3 type3="dto3Type">
<dto1 type1="dto1Type"></dto1>
</dto3>
我的代码有什么问题,请告诉我...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)