В XML не имеет значения, в каком порядке находятся атрибуты. Если у вас есть какой-то фрагмент кода для обработки XML, где это имеет значение, то я бы предположил, что код содержит ошибки.
Из спецификации XML здесь обратите внимание на фразу: «Обратите внимание, что порядок спецификаций атрибутов в начальном теге или теге пустого элемента не имеет значения».
В ответ на ваш конкретный вопрос о том, можете ли вы выполнить определенный приказ, я не верю в это. На самом деле я никогда не пытался это сделать (так как это не нужно), но вряд ли люди из REXML будут тратить время на реализацию подобной функции :-). Поскольку пары ключ / значение хранятся в виде хэша, их порядок, скорее всего, будет случайным (насколько вы можете судить по алфавитной последовательности ключей).
Конечно, поскольку Ruby поставляется с исходным кодом для REXML, вы можете (в случае отчаяния) заменить или дополнить включенную копию своей собственной версией (REXML2?).
Поскольку вы выполняете простые операции размещения, возможно, он использует симпатичный форматтер, поэтому проверьте начало кода write_element
в src/rexml/formatters/pretty.rb
, где он выполняет "node.attributes.each_attribute do |attr|
" - вы можете обнаружить, что это так же просто, как сортировка этот список до обработки элементов.
Вы также можете предложить разработчикам (см. здесь для списка рассылки или здесь для отчетов об ошибках и запросов на улучшение), чтобы они сделали эту опцию в будущем выпуске но на их месте я бы просто сказал, что в этом нет необходимости.