编写 XML 元素时设置属性的顺序

Spi*_*man 3 java xml

当用java编写时,如下:

Element fieldEl = targetDocument.createElement("field");
fieldEl.setAttribute("Wine","Marlo");
fieldEl.setAttribute("Beer","Corona");
Run Code Online (Sandbox Code Playgroud)

添加属性的顺序不会保留在结果 XML 文件中。
我如何控制 XML 元素内属性的顺序(这样人们就可以轻松阅读......)?

Dir*_*irk 5

根据DOM 标准,属性节点没有定义的顺序:

实现NamedNodeMap接口的对象用于表示可以通过名称访问的节点集合。注意NamedNodeMap并不是继承自NodeList;NamedNodeMap 不按任何特定顺序维护。实现 NamedNodeMap 的对象中包含的对象也可以通过序数索引来访问,但这只是为了方便枚举 NamedNodeMap 的内容,并不意味着 DOM 指定这些节点的顺序。

(强调)并且在XML 标准中都没有:

请注意,开始标签或空元素标签中属性规范的顺序并不重要。

我认为许多 DOM 实现根本不支持属性排序。您必须编写自己的序列化机制才能实现排序(没有双关语)。