This question already has answers here:
JAXB Compiler and Attribute Order [duplicate]
                            
                                (3个答案)
                            
                    
                2年前关闭。
        

    

我有两节课:

@XmlSeeAlso(ListType.class)
public class Type {
    private int id;

    public int getId() {
        return id;
    }
    @XmlAttribute
    public void setId(int id) {
        this.id = id;
    }
}

@XmlRootElement
public class ListType extends Type {

    private String name;

    private String namespace;

    public String getName() {
        return name;
    }

    @XmlAttribute
    public void setName(String name) {
        this.name = name;
    }

    public String getNamespace() {
        return namespace;
    }

    @XmlAttribute
    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }
}


然后进行编组:

ListType listType = new ListType();
listType.setId(123);
listType.setName("Name");
listType.setNamespace("Namespace");

JAXBContext jaxbContext = JAXBContext.newInstance(UserType.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

jaxbMarshaller.marshal(listType, System.out);


最后,我得到这样的XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<listUserType name="Name" namespace="Namespace" id="123"/>


一切都很好,请告诉我,如何在XML中指定属性的顺序?

我希望他们按此顺序进行:

<listType id="123" name="Name" namespace="Namespace" />


这对于解决我的任务非常必要。谢谢

最佳答案

@XmlTransient注释父类,它将帮助您包括父类的属性,然后

将此@XmlType(propOrder={"Id", "Name", "Namespace"})添加到ListUserType类的顶部。

10-05 21:13
查看更多