gpt4 book ai didi

java - 如何在没有标记值的情况下将映射编码为 xml

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:55 27 4
gpt4 key购买 nike

我有一个要转换为 XML 的 HashMap:

@XmlJavaTypeAdapter(OrdersAdapter.class)
private Map<Long, Order> orders = new LinkedHashMap<Long, Order>();

map 默认转换为<entry><key></key><value></value><entry> ,但我想获取 XML,其中键是属性,没有值标记。像这样:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<productsMap>
<orders>
<order orderId="1">
<prodId>123</prodId>
<price>1</price>
</order>
<order orderId="2">
<prodId>15</prodId>
<price>10</price>
</order>
</orders>
</productsMap>

使用我在 github 上的程序:https://github.com/pfryn/simpleTestProject/tree/master/src/pl/shop ,现在我可以像这样生成 xml:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<productsMap>
<orders>
<order orderId="1">
<value>
<prodId>123</prodId>
<price>1</price>
</value>
</order>
<order orderId="2">
<value>
<prodId>15</prodId>
<price>10</price>
</value>
</order>
</orders>
</productsMap>

你知道如何避免“值(value)”标签吗?

最佳答案

订单类型

public class OrderType {

public List<Order> order =
new ArrayList<Order>();
}

订单适配器

public class OrdersAdapter extends XmlAdapter<OrderType, Map<Long, Order>> {

@Override
public Map<Long, Order> unmarshal(OrderType v) throws Exception {
Map<Long, Order> hashMap = new HashMap<Long, Order>();
for (Order myEntryType : v.order) {
hashMap.put(myEntryType.orderId, myEntryType);
}
return hashMap;
}

@Override
public OrderType marshal(Map<Long, Order> map) throws Exception {
OrderType ordType = new OrderType();
for (Entry<Long, Order> entry : map.entrySet()) {
Order ordEntryType =
new Order();
ordEntryType.orderId = entry.getKey();
ordEntryType.price = entry.getValue().price;
ordEntryType.prodId = entry.getValue().prodId;
ordType.order.add(ordEntryType);
}
return ordType;
}

}

顺序

public class Order {

public Order(){
super();
}
public Order(Long prodId, BigDecimal price) {
this();
this.prodId = prodId;
this.price = price;
}

@XmlAttribute
public Long orderId;

public Long prodId;
public BigDecimal price;

}

输出 XML

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<productsMap>
<orders>
<order orderId="1">
<prodId>123</prodId>
<price>1</price>
</order>
<order orderId="2">
<prodId>15</prodId>
<price>10</price>
</order>
</orders>
</productsMap>

关于java - 如何在没有标记值的情况下将映射编码为 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com