我使用Jaxb2MarshallerandXMLStreamWriter从Java POJO-s生成 XML 文件XSD。而且我意识到,如果我在不同的环境中运行我的应用程序,元素中属性的顺序是不同的。我还意识到在我的机器中它使用与 XSD 中相同的顺序,而在其他机器中它看起来使用降序的字母数字顺序。但我无法证明这个描述。当然是字母数字顺序,但很有可能。什么可能导致此订单更改?我知道属性的顺序在 XML 中应该无关紧要,但真的没有解决方案来为 Java 中的元素属性设置顺序吗?当然可以使用任何类型的库。
2 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
我会检查 HashMaps 或 HashSets 是否参与处理(以及类似的集合/类......)。
这些集合的迭代器元素的顺序没有定义,可以在JVM版本和实现之间以不同的方式实现。
如果涉及数据库选择,则元素的顺序可以不同(按供应商、版本、机器、状态),当没有使用明确的“order by”时。例如,在 postgresql 上,在我的 PC上,最后接触的元素首先出现,然后是其他元素
扬帆大鱼
TA贡献1799条经验 获得超9个赞
JAXB 使用反射进行编组。通过反射返回的字段列表未按任何特定顺序排序(请参阅此处)。因此,在编组时,属性的顺序不一定反映 XSD 或 Java POJO 中的顺序。最有可能的是,不同操作系统上的不同 Java 版本可能会以不同的方式实现反射,因此顺序可能会改变。
如果您只需要在不同的安装中保持一致,请使用 . 按字母顺序对它们进行排序@XMLAccessorOrder
。
这也可能有帮助。
添加回答
举报
0/150
提交
取消