萨克森Saxon是否提供一种方法来维护键在地图中的插入顺序?

问题描述

将映射序列化为JSON时,Saxon似乎不维护键的插入顺序。虽然我知道JSON不需要这样做,但它有助于诊断并减少最终用户的困惑。

是否可以通过实现自定义序列化器来实现这一目标?还是订单会在流程的早期丢失?

解决方法

Saxon(Java / .NET版本)具有XDM映射的两个实现,即HashTrieMap和DictionaryMap,并且都不维护顺序。两者都使用散列结构来随机化插入时的位置,因此无法恢复它。同样,Saxon-JS使用不保留顺序的HashTrie结构。

我们自己为Saxon-JS生成SEF文件时遇到了这个问题。这是一种基于JSON的格式,如果属性是随机顺序,则很难读取。因此,我们实现了序列化选项saxon:property-order,该选项可让您定义输出中属性的顺序。它不能使您保持原始的输入顺序,但可以使您以对人类读者有意义的方式对输出进行排序。

就像所有Saxon扩展都符合W3C规范一样,这需要Saxon-PE或更高版本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...