【问题标题】:How can I make @XmlAttribute in a special order by using JAXB?如何使用 JAXB 按特殊顺序制作 @XmlAttribute?
【发布时间】:2012-04-30 05:33:32
【问题描述】:

我有一个元素中需要 3 个属性的 XML 文件。如何让街道、邮编和城市属性的顺序如我所愿?

<address street="Big Street" zip="2012" city="Austin">
</address>
@XmlType(name="Street)
@XmlRootElement(name = "Street")
public class Street {

@XmlAttribute
private String name;

@XmlAttribute
private String type;

    ... set and get method
}

【问题讨论】:

    标签: jaxb xml-attribute


    【解决方案1】:

    有趣的是,属性似乎与代码中提到的顺序相反。就我而言,我使用了两个变量(名称和值),我必须将它们声明为:

    // The inverse order of name & value seems to make them render in XML in name/value order
    @XmlAttribute
    protected String value;
    @XmlAttribute
    protected String name;
    

    生成 XML 时,结果如下:

    <attribute name="nameValue" value="valueValue"/>
    

    【讨论】:

    • 它们似乎在 Java 6 中按字母顺序排序,在 Java 7 中按声明顺序排序(在这两种情况下都使用内置的 JDK JAXB 提供程序)。
    • Java 7 似乎也考虑了propOrder
    【解决方案2】:

    您可以使用@XmlAccessorOrder(具有预定义值)或@XmlType(仅适用于属性)来管理排序。

    Samples

    编辑:

    对于自定义订购,JAXB 规范不提供任何内容,但如果您的 JAXB 提供者为您提供一些功能,您可以这样做。

    找到这个link,它谈到了使用 EclipseLink JAXB 进行订购。

    【讨论】:

    • 是的,我们似乎对此无能为力。
    • 是的,除非您恢复到提供者 API
    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2013-03-03
    • 2012-12-08
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多