如何在java springboot中增加列表元素中的@XmlElement name

xhv8bpkk  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(46)

`我需要实现的输出:

<Entity>
<MRA_BALANCE_SHEET>
       <R0030C0030>value</R0030C0030>
       <R0030C0040>value</R0030C0040>
</MRA_BALANCE_SHEET>
<MRA_BALANCE_SHEET>
       <R0040C0030>value</R0040C0030>
       <R0040C0040>value</R0040C0030>
</MRA_BALANCE_SHEET>
</Entity>

字符串
每一个元素,“R 0030”将递增10。所以你可以看到,在下一个列表中,R 0030 C 0030将递增10,=“R 0040 C 0030”
需要帮助`
这是我的样本实体

private String PHP;
        private String PHPUSD;
        
        
        @XmlJavaTypeAdapter(DynamicElementNameAdapter.class)
        public String getPHP() {
            return PHP;
        }

         /setter...


我已经试过这个适配器了

public class DynamicElementNameAdapter extends XmlAdapter<String, String>{

     private static int counter = 30;
     
    @Override
    public String unmarshal(String v) throws Exception {
        // TODO Auto-generated method stub
        return v;
    }

    @Override
    public String marshal(String v) throws Exception {
            
            String dynamicElementName = "R" + String.format("%04d", counter) + "C0030";
            counter += 10; // Increment by 10 for the next element
            return dynamicElementName;
    }

}


但输出是错误的:

<Entity>
<MRA_BALANCE_SHEET>
       <PHP>R0030C0030</PHP>
</MRA_BALANCE_SHEET>
<MRA_BALANCE_SHEET>
       <PHP>R0040C0030</PHP>
</MRA_BALANCE_SHEET>
</Entity>


Help!

bvjxkvbb

bvjxkvbb1#

您应该创建一个Map,将元素名作为键,将元素值作为值,然后,您可以使用XStream或任何其他库将此Map转换为xml。
请参阅How to convert XML to java.util.Map and vice versa?了解更多信息。

相关问题