为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用运行时定义的节点名称将数组序列化为 XML?

如何使用运行时定义的节点名称将数组序列化为 XML?

慕森王 2023-04-13 15:18:19
我想在我使用 Jackson 的 spring boot 应用程序中将一组 POJO 序列化为自定义 XML 格式。节点名称将在运行时child修改。我已经成功地创建了一个像这样的孩子的根:import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectWriter;import com.fasterxml.jackson.databind.node.ObjectNode;import com.fasterxml.jackson.dataformat.xml.XmlMapper;import java.util.Arrays;import java.util.List;import java.util.Random;class MyPojo {    public int random = new Random().nextInt();    public static void main(String[] args) throws JsonProcessingException {        List<MyPojo> list = Arrays.asList(new MyPojo(), new MyPojo());        XmlMapper mapper = new XmlMapper();        final ObjectWriter writer = mapper.writer().withRootName("parent");        ObjectNode node = mapper.createObjectNode();        list.forEach(x -> node.putPOJO("child", x)); // <= does not work, replaces values instead of adding them        String s = writer.writeValueAsString(node);        System.out.println(s);    }}我希望它输出:<parent>    <child>        <random>123</random>    </child>    <child>        <random>234</random>    </child></parent>但是当前代码只输出:<parent>    <child>        <random>234</random>    </child></parent>我怎样才能添加几个孩子并仍然保留我自己的节点名称?
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

您需要放置一个ArrayNode并将孩子添加到其中


OjectNode node = mapper.createObjectNode();

ArrayNode arrayNode = node.putArray("child");

list.forEach(x -> arrayNode.addPOJO(x));


查看完整回答
反对 回复 2023-04-13
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信