Мне нужно напечатать XML, которым я манипулировал, используя groovy, и поддерживать порядок атрибутов.Мне все равно, если он использует XmlParser / XmlNodePrinter или XmlSlurper / StreamingMarkupBuilder.Мой текущий код выглядит следующим образом:
File file = new File('input.xml')
def root = new XmlSlurper().parse(file)
def admins = root.user.findAll {it.@role.text().equals("admin")}
admins.each { admin ->
admin.permission.findAll { it.@interface.text().equals("RoleManagement")
}.each {
it.@implementation = "AdminRoleManagement"
}
}
def smb = new StreamingMarkupBuilder().bind { mkp.yield root }
new File('output.xml').text = groovy.xml.XmlUtil.serialize(smb)
Вот XML, который подается в программу
<users>
<user username="test1234" role="admin">
<permission interface="com.test.RoleManagement" implementation="com.test.AdminRoleManagement"/>
<permission interface="com.test.UserAdministration" implementation="com.test.UserAdministrationImpl"/>
</user>
</users>
После того, как я распечатал измененный файл, атрибуты интерфейса и реализацииполностью изменено.
Я уже знаю, о чем вы думаете: порядок атрибутов xml не имеет значения.Что ж, мое требование от моего босса - сохранить порядок атрибутов, потому что так было всегда.На самом деле я должен был написать этот парсер с использованием Java / DOM4J и пытался показать моей команде что-то новое.Любая помощь будет оценена.Спасибо!