Groovy - XmlNodePrinter печатает пустой файл - PullRequest
3 голосов
/ 02 апреля 2012

Я пытаюсь напечатать отформатированный xml в файл, но мой XmlNodePrinter просто печатает пустой файл.Я думаю, что xml-объект, который я передаю, заполнен правильно.Я могу распечатать его с помощью StreamingMarkupBuilder, но он отформатирован в одну строку.Я не уверен, почему я не могу использовать XmlNodePrinter.Вот соответствующая часть моего кода.

Цель кода - изменить файл конфигурации xml.Я должен найти / заменить на определенное разрешение.

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.@type.text().equals("RoleManagement") 
  }.each {
    it.@type = "AdminRoleManagement"
  }
}

String filename = "output.xml"
new XmlNodePrinter(new PrintWriter(filename)).print(root)

Спасибо

1 Ответ

2 голосов
/ 02 апреля 2012

Я считаю, XmlNodePrinter требует Node, а не GPathResult

XmlSlurper.parse возврат GPathResult

Таким образом, очевидным решением является использование XmlParser вместо XmlSlurper

Или вы можете использовать StreamingMarkupBuilder и сделать:

def smb = new StreamingMarkupBuilder().bind { mkp.yield root }
new File( 'output.xml' ).text = groovy.xml.XmlUtil.serialize( smb )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...