从XML删除不需要的根元素

问题描述

我正在使用JAXB使用JAXB将Java对象转换为XML字符串

在我的java类代码下面

@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>

我想从xml中删除不需要的xml标记dtos

我的代码有什么问题,请告诉我...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)