Java可以通过什么来更改生成的XML文件中元素属性的顺序?

时间:2019-01-11 11:01:31

标签: java sorting xsd jaxb xml-attribute

我使用Jaxb2MarshallerXMLStreamWriterXSD Java POJO-s生成XML文件。

并且我意识到,如果我在不同环境中运行应用程序 ,元素中属性的顺序将不同

我还意识到,在我的机器中,它使用与XSD中相同的顺序,而在其他机器中,它看起来像在使用降序字母数字顺序。

但是我无法证明这个描述。当然是字母数字顺序,但是很有可能。

什么原因导致此订单更改?

我知道属性的顺序在XML中应该无关紧要,但是实际上没有解决方案来设置Java中元素属性的顺序吗?当然还有任何类型的库。

2 个答案:

答案 0 :(得分:1)

我将检查HashMaps或HashSets是否参与处理(以及类似的collections / classs ...)。

order of the elements of the iterator of these collections are not definedJVM versions and imlementations之间可以不同地实现

如果涉及数据库选择,则在不使用显式“ order by”的情况下,元素的顺序可以不同(按供应商,版本,机器,状态)。例如。在postgresql上,在我的PC the last touched elements come first, then the others

答案 1 :(得分:0)

JAXB使用反射进行编组。通过反射返回的字段列表未按任何特定顺序排序(请参见here)。因此,在编组时,属性的顺序不一定反映XSD或Java POJO中的顺序。很有可能,不同操作系统上的不同Java版本可能会以不同方式实现反射,因此顺序可能会更改。

如果只需要在不同安装之间保持一致,请使用@XMLAccessorOrder按字母顺序对它们进行排序。

This也可能有帮助。