Eclipse XML格式改变了标签的顺序?

时间:2012-03-27 16:22:37

标签: xml eclipse formatting

我刚注意到一些奇怪的事情。如果我有这个XML:

<level number="7" background="background_5">

然后按CTRL-SHIFT-F (Format)代码突然改为:

<level background="background_5" number="7" >

我很难想象文件的更改是故意完成的,因为我在解析文件时遇到了一些严重的问题,因为我通过索引访问属性。

是否有一个原因,除了它是按字母顺序排序,它的格式是这样的,更重要的是,我该如何将其关闭?

2 个答案:

答案 0 :(得分:4)

The XML spec明确表示不保证属性的顺序:

  

请注意,start-tag或empty-element标记中的属性规范顺序并不重要。

您可能会找到一种方法来更改Eclipse中XML格式化程序的行为,但最强大的解决方案是按名称而不是索引访问属性。否则,您的代码将对根据XML规范完全合法的更改保持敏感。

另见:

答案 1 :(得分:1)

我同意Eli Acherkan关于在处理XML文档时不依赖属性顺序的答案。

话虽如此,人们可能会有特定顺序的属性的风格理由。在某些情况下,它还可以使XML文档更易于阅读以对相关属性进行分组。

查看Eclipse XML格式首选项,我没有看到任何与属性顺序相关的内容。

Eclipse XML Formatting Preferences

从您的示例中看,行为可能是按字母顺序排序属性,但我没有执行测试来确认该理论。它可以做的另一件事是对属性进行排序,以便它们出现在XSD / DTD中。您可能想要测试这个理论,因为这可以让您对订单有所控制。

您可能还希望open an enhancement request优先控制此格式化程序行为。