JAXB 排序多个属性
JAXB ordering multiple properties
在我的项目中,我想在 XML 中实现特定的属性顺序。在 java 中,对象表示为:
public class Plan {
private List<Act> act;
private List<Leg> leg;
...
输出对象应该类似于这个:
<plan>
<act x="-25000" y="0"/>
<leg mode="car">
...
</leg>
<act x="10000" y="0"/>
<leg mode="car">
...
</leg>
</plan>
JAXB 是否能够为我需要按顺序排列项目的情况设置特定顺序:
act.get(0)
leg.get(0)
act.get(1)
leg.get(1)
...
..
.
我知道 JAXB 能够保存特定顺序的参数,例如首先执行操作,然后使用 @XmlType (propOrder={"prop1","prop2",..."propN"})
,但是这个项目不是读取此 [=24 的第 3 方应用程序的情况=] 成对阅读它们,propOrder 会一个接一个地打印它们。
好的,我从不同的角度解决了这个问题,我解决了它...以前我认为这是一个排序问题 - 事实上,它是 Java POJO class 的问题构造和 JAXB 注释。
解决方法是使用
@XmlElements({
@XmlElement(name="leg", type=Leg.class),
@XmlElement(name="act", type=Act.class)
})
@XmlElementWrapper(name="plan")
public List<Plan> getPlan() {
return plan;
}
然后物品必须一个接一个地放。
可以在这个答案中找到更多详细信息:
Marshalling a List of objects implementing a common interface, with JaxB
在我的项目中,我想在 XML 中实现特定的属性顺序。在 java 中,对象表示为:
public class Plan {
private List<Act> act;
private List<Leg> leg;
...
输出对象应该类似于这个:
<plan>
<act x="-25000" y="0"/>
<leg mode="car">
...
</leg>
<act x="10000" y="0"/>
<leg mode="car">
...
</leg>
</plan>
JAXB 是否能够为我需要按顺序排列项目的情况设置特定顺序:
act.get(0)
leg.get(0)
act.get(1)
leg.get(1)
...
..
.
我知道 JAXB 能够保存特定顺序的参数,例如首先执行操作,然后使用 @XmlType (propOrder={"prop1","prop2",..."propN"})
,但是这个项目不是读取此 [=24 的第 3 方应用程序的情况=] 成对阅读它们,propOrder 会一个接一个地打印它们。
好的,我从不同的角度解决了这个问题,我解决了它...以前我认为这是一个排序问题 - 事实上,它是 Java POJO class 的问题构造和 JAXB 注释。
解决方法是使用
@XmlElements({
@XmlElement(name="leg", type=Leg.class),
@XmlElement(name="act", type=Act.class)
})
@XmlElementWrapper(name="plan")
public List<Plan> getPlan() {
return plan;
}
然后物品必须一个接一个地放。
可以在这个答案中找到更多详细信息: Marshalling a List of objects implementing a common interface, with JaxB