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

xhv8bpkk  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(164)

`我需要实现的输出:

  1. <Entity>
  2. <MRA_BALANCE_SHEET>
  3. <R0030C0030>value</R0030C0030>
  4. <R0030C0040>value</R0030C0040>
  5. </MRA_BALANCE_SHEET>
  6. <MRA_BALANCE_SHEET>
  7. <R0040C0030>value</R0040C0030>
  8. <R0040C0040>value</R0040C0030>
  9. </MRA_BALANCE_SHEET>
  10. </Entity>

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

  1. private String PHP;
  2. private String PHPUSD;
  3. @XmlJavaTypeAdapter(DynamicElementNameAdapter.class)
  4. public String getPHP() {
  5. return PHP;
  6. }
  7. /setter...


我已经试过这个适配器了

  1. public class DynamicElementNameAdapter extends XmlAdapter<String, String>{
  2. private static int counter = 30;
  3. @Override
  4. public String unmarshal(String v) throws Exception {
  5. // TODO Auto-generated method stub
  6. return v;
  7. }
  8. @Override
  9. public String marshal(String v) throws Exception {
  10. String dynamicElementName = "R" + String.format("%04d", counter) + "C0030";
  11. counter += 10; // Increment by 10 for the next element
  12. return dynamicElementName;
  13. }
  14. }


但输出是错误的:

  1. <Entity>
  2. <MRA_BALANCE_SHEET>
  3. <PHP>R0030C0030</PHP>
  4. </MRA_BALANCE_SHEET>
  5. <MRA_BALANCE_SHEET>
  6. <PHP>R0040C0030</PHP>
  7. </MRA_BALANCE_SHEET>
  8. </Entity>


Help!

bvjxkvbb

bvjxkvbb1#

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

相关问题