如何添加多个同名ObjectNode节点以生成符合要求的XML结构
问题根因
- ObjectNode是基于键值对的JSON对象结构,键具备唯一性,循环中重复调用
putObject("feature")时,后写入的节点会直接覆盖之前的同名节点,所以最终只会保留一个feature节点。
实现方案
Jackson的XML序列化器会自动将ArrayNode类型的数组元素转换为多个同名的XML子节点,你可以按照如下方式调整代码:
ObjectNode featureSetNode = ((ObjectNode) sequenceNode).putObject("feature_set"); // 先创建feature对应的数组节点,用于存储多个feature子节点 ArrayNode featureArray = featureSetNode.putArray("feature"); for (SimpleFeature feature : simpleFeatures ) { // 生成单个feature对象节点,添加到数组中 ObjectNode featureNode = featureArray.addObject(); // 此处继续为featureNode填充所需的属性、子节点即可 }
注意:需要使用Jackson XML模块提供的
XmlMapper执行序列化操作,普通JSON序列化的ObjectMapper无法输出符合要求的XML结构。
内容的提问来源于stack exchange,提问作者user453575457
相关产品推荐
相关产品推荐

